Delete jack support am: 8b34196af3
am: b07831a0ae

Change-Id: I6b82a837aafd5203998f6945d23f5ff08cb46e54
diff --git a/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java b/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
index 505a353..f09110f 100644
--- a/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
+++ b/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
@@ -42,6 +42,9 @@
 
         Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);
 
+        // Disables a dialog shown on adb install execution.
+        Settings.Global.putInt(getContentResolver(), Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB, 0);
+
         // Enable the GPS.
         // Not needed since this SDK will contain the Settings app.
         Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
diff --git a/apps/WidgetPreview/AndroidManifest.xml b/apps/WidgetPreview/AndroidManifest.xml
index ea70e0c..0d058aa 100644
--- a/apps/WidgetPreview/AndroidManifest.xml
+++ b/apps/WidgetPreview/AndroidManifest.xml
@@ -20,7 +20,7 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.BIND_APPWIDGET" />
         
-    <uses-sdk android:targetSdkVersion="11"/>
+    <uses-sdk android:targetSdkVersion="24"/>
     
     <application android:label="@string/application_label">
 
diff --git a/build/sdk-android-arm64-v8a.atree b/build/sdk-android-arm64-v8a.atree
index 5151680..e5e9f78 100644
--- a/build/sdk-android-arm64-v8a.atree
+++ b/build/sdk-android-arm64-v8a.atree
@@ -14,11 +14,10 @@
 # limitations under the License.
 #
 
-prebuilts/qemu-kernel/${TARGET_ARCH}/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-qemu
-prebuilts/qemu-kernel/${TARGET_ARCH}/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+prebuilts/qemu-kernel/${TARGET_ARCH}/3.18/kernel-qemu2 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
 
 # version files for the SDK updater, from development.git
 ${HOST_OUT}/development/sys-img-${TARGET_CPU_ABI}/images_arm64-v8a_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
 
 # feature control config file
-development/sys-img/advancedFeatures.ini system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/advancedFeatures.ini
+development/sys-img/advancedFeatures.ini.arm system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/advancedFeatures.ini
diff --git a/build/sdk-android-armeabi-v7a.atree b/build/sdk-android-armeabi-v7a.atree
index a693138..a59f323 100644
--- a/build/sdk-android-armeabi-v7a.atree
+++ b/build/sdk-android-armeabi-v7a.atree
@@ -15,8 +15,7 @@
 #
 
 # Copy the ARMv7 specific kernel image to .../kernel-qemu
-prebuilts/qemu-kernel/${TARGET_ARCH}/kernel-qemu-armv7 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-qemu
-prebuilts/qemu-kernel/${TARGET_ARCH}/ranchu/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+prebuilts/qemu-kernel/${TARGET_ARCH}/3.18/kernel-qemu2 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
 
 # version files for the SDK updater, from development.git
 ${HOST_OUT}/development/sys-img-${TARGET_CPU_ABI}/images_armeabi-v7a_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
@@ -25,4 +24,4 @@
 development/sys-img/images_armeabi-v7a_hardware.ini    system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/hardware.ini
 
 # feature control config file
-development/sys-img/advancedFeatures.ini system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/advancedFeatures.ini
+development/sys-img/advancedFeatures.ini.arm system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/advancedFeatures.ini
diff --git a/build/sdk-android-armeabi.atree b/build/sdk-android-armeabi.atree
index 26d5b04..1245892 100644
--- a/build/sdk-android-armeabi.atree
+++ b/build/sdk-android-armeabi.atree
@@ -21,4 +21,4 @@
 ${HOST_OUT}/development/sys-img-${TARGET_CPU_ABI}/images_armeabi_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
 
 # feature control config file
-development/sys-img/advancedFeatures.ini system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/advancedFeatures.ini
+development/sys-img/advancedFeatures.ini.arm system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/advancedFeatures.ini
diff --git a/build/sdk-android-x86.atree b/build/sdk-android-x86.atree
index 46d05f5..f8aeff0 100644
--- a/build/sdk-android-x86.atree
+++ b/build/sdk-android-x86.atree
@@ -14,8 +14,8 @@
 # limitations under the License.
 #
 
-prebuilts/qemu-kernel/${TARGET_ARCH}/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-qemu
-prebuilts/qemu-kernel/${TARGET_ARCH}/ranchu/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+prebuilts/qemu-kernel/${TARGET_ARCH}/3.18/kernel-qemu2 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+device/generic/goldfish/data/etc/encryptionkey.img system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/encryptionkey.img
 
 # version files for the SDK updater, from development.git
 ${HOST_OUT}/development/sys-img-${TARGET_CPU_ABI}/images_${TARGET_ARCH}_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
diff --git a/build/sdk-android-x86_64.atree b/build/sdk-android-x86_64.atree
index b9867d8..b1b534b 100644
--- a/build/sdk-android-x86_64.atree
+++ b/build/sdk-android-x86_64.atree
@@ -14,8 +14,8 @@
 # limitations under the License.
 #
 
-prebuilts/qemu-kernel/${TARGET_ARCH}/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-qemu
-prebuilts/qemu-kernel/${TARGET_ARCH}/ranchu/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+prebuilts/qemu-kernel/${TARGET_ARCH}/3.18/kernel-qemu2 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-ranchu
+device/generic/goldfish/data/etc/encryptionkey.img system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/encryptionkey.img
 
 # version files for the SDK updater, from development.git
 ${HOST_OUT}/development/sys-img-${TARGET_CPU_ABI}/images_${TARGET_ARCH}_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
diff --git a/build/sdk.atree b/build/sdk.atree
index 1d5431e..4ec733d 100644
--- a/build/sdk.atree
+++ b/build/sdk.atree
@@ -230,6 +230,7 @@
 
 # System images + Kernel
 system-qemu.img                                 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/system.img
+vendor-qemu.img                                 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/vendor.img
 ramdisk.img                                system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/ramdisk.img
 userdata.img                               system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/userdata.img
 system/build.prop                          system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/build.prop
diff --git a/cmds/monkey/src/com/android/commands/monkey/Monkey.java b/cmds/monkey/src/com/android/commands/monkey/Monkey.java
index 440f710..3b1e39b 100644
--- a/cmds/monkey/src/com/android/commands/monkey/Monkey.java
+++ b/cmds/monkey/src/com/android/commands/monkey/Monkey.java
@@ -260,8 +260,7 @@
      */
     private class ActivityController extends IActivityController.Stub {
         public boolean activityStarting(Intent intent, String pkg) {
-            boolean allow = MonkeyUtils.getPackageFilter().checkEnteringPackage(pkg)
-                    || (DEBUG_ALLOW_ANY_STARTS != 0);
+            final boolean allow = isActivityStartingAllowed(intent, pkg);
             if (mVerbose > 0) {
                 // StrictMode's disk checks end up catching this on
                 // userdebug/eng builds due to PrintStream going to a
@@ -279,6 +278,34 @@
             return allow;
         }
 
+        private boolean isActivityStartingAllowed(Intent intent, String pkg) {
+            if (MonkeyUtils.getPackageFilter().checkEnteringPackage(pkg)) {
+                return true;
+            }
+            if (DEBUG_ALLOW_ANY_STARTS != 0) {
+                return true;
+            }
+            // In case the activity is launching home and the default launcher
+            // package is disabled, allow anyway to prevent ANR (see b/38121026)
+            final Set<String> categories = intent.getCategories();
+            if (intent.getAction() == Intent.ACTION_MAIN
+                    && categories != null
+                    && categories.contains(Intent.CATEGORY_HOME)) {
+                try {
+                    final ResolveInfo resolveInfo =
+                            mPm.resolveIntent(intent, intent.getType(), 0, UserHandle.myUserId());
+                    final String launcherPackage = resolveInfo.activityInfo.packageName;
+                    if (pkg.equals(launcherPackage)) {
+                        return true;
+                    }
+                } catch (RemoteException e) {
+                    Logger.err.println("** Failed talking with package manager!");
+                    return false;
+                }
+            }
+            return false;
+        }
+
         public boolean activityResuming(String pkg) {
             StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskWrites();
             Logger.out.println("    // activityResuming(" + pkg + ")");
@@ -395,7 +422,7 @@
     }
 
     /**
-     * Run "cat /data/anr/traces.txt". Wait about 5 seconds first, to let the
+     * Dump the most recent ANR trace. Wait about 5 seconds first, to let the
      * asynchronous report writing complete.
      */
     private void reportAnrTraces() {
@@ -403,7 +430,25 @@
             Thread.sleep(5 * 1000);
         } catch (InterruptedException e) {
         }
-        commandLineReport("anr traces", "cat /data/anr/traces.txt");
+
+        // The /data/anr directory might have multiple files, dump the most
+        // recent of those files.
+        File[] recentTraces = new File("/data/anr/").listFiles();
+        if (recentTraces != null) {
+            File mostRecent = null;
+            long mostRecentMtime = 0;
+            for (File trace : recentTraces) {
+                final long mtime = trace.lastModified();
+                if (mtime > mostRecentMtime) {
+                    mostRecentMtime = mtime;
+                    mostRecent = trace;
+                }
+            }
+
+            if (mostRecent != null) {
+                commandLineReport("anr traces", "cat " + mostRecent.getAbsolutePath());
+            }
+        }
     }
 
     /**
diff --git a/samples/BusinessCard/Android.mk b/samples/BusinessCard/Android.mk
index 78eba5f..c2187d6 100644
--- a/samples/BusinessCard/Android.mk
+++ b/samples/BusinessCard/Android.mk
@@ -12,4 +12,6 @@
 
 LOCAL_DEX_PREOPT := false
 
+LOCAL_PROGUARD_ENABLED := disabled
+
 include $(BUILD_PACKAGE)
diff --git a/samples/DeviceAdminWhitelistedAccount/Android.mk b/samples/DeviceAdminWhitelistedAccount/Android.mk
new file mode 100644
index 0000000..03d618c
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/Android.mk
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2017 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.
+#
+
+# We build two apps from the same source
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_PACKAGE_NAME := DeviceAdminWhitelistedAccount
+
+LOCAL_MODULE_TAGS := samples tests
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_PACKAGE)
diff --git a/samples/DeviceAdminWhitelistedAccount/AndroidManifest.xml b/samples/DeviceAdminWhitelistedAccount/AndroidManifest.xml
new file mode 100644
index 0000000..6ce9f89
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/AndroidManifest.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.app.admin.whitelistedaccount">
+
+    <uses-sdk android:minSdkVersion="25" android:targetSdkVersion="25" />
+
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
+
+    <application
+        android:label="@string/app_name"
+        android:icon="@mipmap/ic_launcher"
+        >
+
+        <activity
+            android:name="MyMain"
+            android:icon="@mipmap/ic_launcher"
+            android:theme="@android:style/Theme.NoDisplay"
+            >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <service
+            android:name=".MyAuthenticator"
+            >
+            <intent-filter>
+                <action android:name="android.accounts.AccountAuthenticator" />
+            </intent-filter>
+
+            <meta-data android:name="android.accounts.AccountAuthenticator"
+                android:resource="@xml/authenticator" />
+        </service>
+    </application>
+</manifest>
diff --git a/samples/DeviceAdminWhitelistedAccount/README.md b/samples/DeviceAdminWhitelistedAccount/README.md
new file mode 100644
index 0000000..bebb4f5
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/README.md
@@ -0,0 +1,24 @@
+# DeviceAdmin Whitelisted Account
+
+This application creates an account that will *not* prevent test-only DO/PO from being activated.
+
+## Build and install:
+
+```
+croot
+mmma -j development/samples/DeviceAdminWhitelistedAccount
+adb install -r -g $OUT/data/app/DeviceAdminWhitelistedAccount/DeviceAdminWhitelistedAccount.apk
+```
+
+
+## Create a whitelisted account
+
+- Launch the "DA Whitelisted Account" app from the launcher.
+
+## Remove a whitelisted account
+
+- Just uninstall the app. i.e.
+
+```
+adb uninstall com.example.android.app.admin.whitelistedaccount
+```
diff --git a/samples/DeviceAdminWhitelistedAccount/res/mipmap-hdpi/ic_launcher.png b/samples/DeviceAdminWhitelistedAccount/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..1cb2a39
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/DeviceAdminWhitelistedAccount/res/mipmap-mdpi/ic_launcher.png b/samples/DeviceAdminWhitelistedAccount/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..d29a23d
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/DeviceAdminWhitelistedAccount/res/mipmap-xhdpi/ic_launcher.png b/samples/DeviceAdminWhitelistedAccount/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..41ffbcb
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/DeviceAdminWhitelistedAccount/res/mipmap-xxhdpi/ic_launcher.png b/samples/DeviceAdminWhitelistedAccount/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..0fee79d
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/DeviceAdminWhitelistedAccount/res/mipmap-xxxhdpi/ic_launcher.png b/samples/DeviceAdminWhitelistedAccount/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..fd74afc
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/DeviceAdminWhitelistedAccount/res/values/strings.xml b/samples/DeviceAdminWhitelistedAccount/res/values/strings.xml
new file mode 100644
index 0000000..b79588e
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">DA Whitelisted Account</string>
+    <string name="account_name">DA Whitelisted Account</string>
+</resources>
diff --git a/samples/DeviceAdminWhitelistedAccount/res/xml/authenticator.xml b/samples/DeviceAdminWhitelistedAccount/res/xml/authenticator.xml
new file mode 100644
index 0000000..7fd89cd
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/res/xml/authenticator.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:accountType="com.example.android.app.admin.whitelistedaccount" />
diff --git a/samples/DeviceAdminWhitelistedAccount/src/com/example/android/app/admin/whitelistedaccount/MyAuthenticator.java b/samples/DeviceAdminWhitelistedAccount/src/com/example/android/app/admin/whitelistedaccount/MyAuthenticator.java
new file mode 100644
index 0000000..db88db3
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/src/com/example/android/app/admin/whitelistedaccount/MyAuthenticator.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2017 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.example.android.app.admin.whitelistedaccount;
+
+import android.accounts.AbstractAccountAuthenticator;
+import android.accounts.Account;
+import android.accounts.AccountAuthenticatorResponse;
+import android.accounts.AccountManager;
+import android.accounts.NetworkErrorException;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.IBinder;
+
+public class MyAuthenticator extends Service {
+    private static final String TAG = "TestAuthenticator";
+
+    private static final String ACCOUNT_TYPE = "com.example.android.app.admin.whitelistedaccount";
+
+    private static final String ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED =
+            "android.account.DEVICE_OR_PROFILE_OWNER_ALLOWED";
+
+    private static Authenticator sInstance;
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        if (sInstance == null) {
+            sInstance = new Authenticator(getApplicationContext());
+
+        }
+        return sInstance.getIBinder();
+    }
+
+    public static boolean setUpAccount(Context context) {
+        final AccountManager am = AccountManager.get(context);
+        if (am.getAccountsByType(ACCOUNT_TYPE).length > 0) {
+            return false; // Already set up.
+        }
+
+        // Add a new account.
+        final Account account = new Account(
+                context.getResources().getString(R.string.account_name), ACCOUNT_TYPE);
+        am.addAccountExplicitly(account, null, null);
+        return true;
+    }
+
+    public static class Authenticator extends AbstractAccountAuthenticator {
+
+        private final Context mContxet;
+
+        public Authenticator(Context context) {
+            super(context);
+            mContxet = context;
+        }
+
+        @Override
+        public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
+                String authTokenType, String[] requiredFeatures, Bundle options)
+                throws NetworkErrorException {
+            return new Bundle();
+        }
+
+        @Override
+        public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
+            return new Bundle();
+        }
+
+        @Override
+        public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account,
+                String authTokenType, Bundle options) throws NetworkErrorException {
+            return new Bundle();
+        }
+
+        @Override
+        public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account,
+                Bundle options) throws NetworkErrorException {
+            return new Bundle();
+        }
+
+        @Override
+        public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account,
+                String authTokenType, Bundle options) throws NetworkErrorException {
+            return new Bundle();
+        }
+
+        @Override
+        public String getAuthTokenLabel(String authTokenType) {
+            return "token_label";
+        }
+
+        @Override
+        public Bundle hasFeatures(AccountAuthenticatorResponse response, Account account,
+                String[] features) throws NetworkErrorException {
+
+            boolean hasAll = false;
+
+            if ((features != null) && (features.length == 1)
+                    && ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED.equals(features[0])) {
+                hasAll = true;
+            }
+
+            Bundle result = new Bundle();
+            result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, hasAll);
+            return result;
+        }
+    }
+}
diff --git a/samples/DeviceAdminWhitelistedAccount/src/com/example/android/app/admin/whitelistedaccount/MyMain.java b/samples/DeviceAdminWhitelistedAccount/src/com/example/android/app/admin/whitelistedaccount/MyMain.java
new file mode 100644
index 0000000..3f44489
--- /dev/null
+++ b/samples/DeviceAdminWhitelistedAccount/src/com/example/android/app/admin/whitelistedaccount/MyMain.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2017 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.example.android.app.admin.whitelistedaccount;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.widget.Toast;
+
+public class MyMain extends Activity {
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final Context context = getApplicationContext();
+
+        new AsyncTask<Void, Void, Boolean>() {
+            @Override
+            protected Boolean doInBackground(Void... voids) {
+                return MyAuthenticator.setUpAccount(context);
+            }
+
+            @Override
+            protected void onPostExecute(Boolean ret) {
+                Toast.makeText(context,
+                        (ret ? "Account created" : "Account already exists"),
+                        Toast.LENGTH_SHORT).show();
+
+            }
+        }.execute();
+
+        finish();
+    }
+}
diff --git a/samples/IntentPlayground/Android.mk b/samples/IntentPlayground/Android.mk
new file mode 100644
index 0000000..7cd3b5a
--- /dev/null
+++ b/samples/IntentPlayground/Android.mk
@@ -0,0 +1,19 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := samples tests
+
+# Only compile source java files in this apk.
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_STATIC_JAVA_LIBRARIES = android-support-v13
+
+LOCAL_PACKAGE_NAME := IntentPlayground
+
+LOCAL_SDK_VERSION := current
+
+
+include $(BUILD_PACKAGE)
+
+# Use the folloing include to make our test apk.
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/samples/IntentPlayground/AndroidManifest.xml b/samples/IntentPlayground/AndroidManifest.xml
new file mode 100644
index 0000000..210df66
--- /dev/null
+++ b/samples/IntentPlayground/AndroidManifest.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.intentplayground">
+    <uses-permission android:name="android.permission.REORDER_TASKS" />
+    <application
+        android:icon="@mipmap/ic_launcher"
+        android:label="@string/app_name"
+        android:roundIcon="@mipmap/ic_launcher_round"
+        android:supportsRtl="true"
+        android:theme="@style/AppTheme">
+        <activity
+            android:name=".LauncherActivity"
+            android:launchMode="singleInstance"
+            android:documentLaunchMode="always">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".SingleTopActivity"
+            android:launchMode="singleTop" />
+        <activity
+            android:name=".SingleInstanceActivity"
+            android:launchMode="singleInstance" />
+        <activity
+            android:name=".SingleTaskActivity"
+            android:launchMode="singleTask" />
+        <activity
+            android:name=".TaskAffinity1Activity"
+            android:launchMode="standard"
+            android:allowTaskReparenting="true"
+            android:taskAffinity=".t1" />
+        <activity
+            android:name=".TaskAffinity2Activity"
+            android:launchMode="standard"
+            android:allowTaskReparenting="true"
+            android:taskAffinity=".t2" />
+        <activity
+            android:name=".TaskAffinity3Activity"
+            android:launchMode="standard"
+            android:allowTaskReparenting="true"
+            android:taskAffinity=".t3" />
+        <activity
+            android:name=".ClearTaskOnLaunchActivity"
+            android:launchMode="standard"
+            android:clearTaskOnLaunch="true"
+            android:allowTaskReparenting="true"
+            android:taskAffinity=".t2" />
+        <activity
+            android:name=".DocumentLaunchIntoActivity"
+            android:documentLaunchMode="intoExisting" />
+        <activity
+            android:name=".DocumentLaunchAlwaysActivity"
+            android:documentLaunchMode="always" />
+        <activity
+            android:name=".DocumentLaunchNeverActivity"
+            android:documentLaunchMode="never" />
+        <activity
+            android:name=".NoHistoryActivity"
+            android:noHistory="true" />
+    </application>
+</manifest>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/drawable/card_background.xml b/samples/IntentPlayground/res/drawable/card_background.xml
new file mode 100644
index 0000000..001247a
--- /dev/null
+++ b/samples/IntentPlayground/res/drawable/card_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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">
+    <solid android:color="@android:color/background_light"/>
+    <corners android:radius="2dp"/>
+    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
+</shape>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/drawable/divider.xml b/samples/IntentPlayground/res/drawable/divider.xml
new file mode 100644
index 0000000..0a0dec3
--- /dev/null
+++ b/samples/IntentPlayground/res/drawable/divider.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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">
+    <size android:height="1dp" />
+    <solid android:color="#ffE0E0E0" />
+</shape>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/drawable/expand_less_mtrl.xml b/samples/IntentPlayground/res/drawable/expand_less_mtrl.xml
new file mode 100644
index 0000000..ee5cddf
--- /dev/null
+++ b/samples/IntentPlayground/res/drawable/expand_less_mtrl.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF9E9E9E"
+        android:pathData="M12,8l-6,6 1.41,1.41L12,10.83l4.59,4.58L18,14z"/>
+</vector>
diff --git a/samples/IntentPlayground/res/drawable/expand_more_mtrl.xml b/samples/IntentPlayground/res/drawable/expand_more_mtrl.xml
new file mode 100644
index 0000000..55def3d
--- /dev/null
+++ b/samples/IntentPlayground/res/drawable/expand_more_mtrl.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF9E9E9E"
+        android:pathData="M16.59,8.59L12,13.17 7.41,8.59 6,10l6,6 6,-6z"/>
+</vector>
diff --git a/samples/IntentPlayground/res/drawable/expander_group_material.xml b/samples/IntentPlayground/res/drawable/expander_group_material.xml
new file mode 100644
index 0000000..1b497da
--- /dev/null
+++ b/samples/IntentPlayground/res/drawable/expander_group_material.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_expanded="true" android:drawable="@drawable/expand_more_mtrl" />
+    <item android:drawable="@drawable/expand_less_mtrl" />
+</selector>
diff --git a/samples/IntentPlayground/res/drawable/info_icon.xml b/samples/IntentPlayground/res/drawable/info_icon.xml
new file mode 100644
index 0000000..77ef9f3
--- /dev/null
+++ b/samples/IntentPlayground/res/drawable/info_icon.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
+</vector>
diff --git a/samples/IntentPlayground/res/drawable/success_card_background.xml b/samples/IntentPlayground/res/drawable/success_card_background.xml
new file mode 100644
index 0000000..bc48008
--- /dev/null
+++ b/samples/IntentPlayground/res/drawable/success_card_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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">
+    <solid android:color="@android:color/holo_green_dark"/>
+    <corners android:radius="2dp"/>
+    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
+</shape>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/activity_main.xml b/samples/IntentPlayground/res/layout/activity_main.xml
new file mode 100644
index 0000000..d74e440
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/activity_main.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:id="@+id/scroll_container"
+    tools:context="com.example.android.intentplayground.BaseActivity">
+
+    <LinearLayout
+        android:id="@+id/fragment_container"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:visibility="visible">
+    </LinearLayout>
+</ScrollView>
diff --git a/samples/IntentPlayground/res/layout/activity_node.xml b/samples/IntentPlayground/res/layout/activity_node.xml
new file mode 100644
index 0000000..bd35d8f
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/activity_node.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_vertical"
+    android:orientation="horizontal"
+    android:paddingBottom="@dimen/medMargin"
+    android:paddingEnd="@dimen/fullMargin"
+    android:paddingLeft="@dimen/fullMargin"
+    android:paddingRight="@dimen/fullMargin"
+    android:paddingStart="@dimen/fullMargin"
+    android:paddingTop="@dimen/medMargin">
+
+    <FrameLayout
+        android:layout_width="@dimen/listIcon"
+        android:layout_height="@dimen/listIcon"
+        android:clipChildren="true">
+
+        <ImageView
+            android:id="@+id/color_label"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:src="@drawable/card_background"
+            android:tint="@color/defaultTint" />
+
+        <TextView
+            android:id="@+id/activity_label"
+            android:layout_width="@dimen/listLabelTextBox"
+            android:layout_height="@dimen/listLabelTextBox"
+            android:layout_gravity="center"
+            android:text="@string/activity_label"
+            android:textAlignment="center"
+            android:textAppearance="@style/medium"
+            android:textColor="@color/labelText"
+            android:textSize="@dimen/titleText" />
+    </FrameLayout>
+
+    <TextView
+        android:id="@+id/activity_name"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/medMargin"
+        android:layout_marginEnd="@dimen/smallMargin"
+        android:layout_weight="1"
+        android:text="@string/activity_name"
+        android:textAppearance="@style/normal" />
+
+    <ImageButton
+        android:id="@+id/intent_button"
+        style="?android:attr/borderlessButtonStyle"
+        android:layout_width="@dimen/listIcon"
+        android:layout_height="@dimen/listIcon"
+        android:src="@drawable/info_icon"
+        android:tint="@color/defaultTint"
+        android:tooltipText="@string/intent_button_tooltip"
+        android:contentDescription="@string/intent_button_description" />
+
+</LinearLayout>
diff --git a/samples/IntentPlayground/res/layout/activity_radio_list_item.xml b/samples/IntentPlayground/res/layout/activity_radio_list_item.xml
new file mode 100644
index 0000000..18cccf0
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/activity_radio_list_item.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/medMargin">
+
+    <RadioButton
+        android:id="@+id/radio_launchMode"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:tag="activityTag"
+        android:text="@string/activity_name_placeholder"
+        android:textAppearance="@style/medium" />
+
+    <TextView
+        android:id="@+id/activity_desc"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/blockMargin"
+        android:text="@string/activity_radio_description"
+        android:textAppearance="@style/caption" />
+</LinearLayout>
diff --git a/samples/IntentPlayground/res/layout/checkbox_list_item.xml b/samples/IntentPlayground/res/layout/checkbox_list_item.xml
new file mode 100644
index 0000000..9ffc93c
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/checkbox_list_item.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<CheckBox
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/checkBox_item"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_weight="1"
+    android:text="@string/checkbox_placeholder"
+    android:textAppearance="@style/normal" />
diff --git a/samples/IntentPlayground/res/layout/dialog_list_item.xml b/samples/IntentPlayground/res/layout/dialog_list_item.xml
new file mode 100644
index 0000000..6be9d74
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/dialog_list_item.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/item"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/listItem"
+    android:gravity="center_vertical"
+    android:paddingLeft="@dimen/fullMargin"
+    android:paddingRight="@dimen/fullMargin"
+    android:text="@string/dialog_intent_flag_placeholder"
+    android:textAppearance="@style/normal"
+    android:textSize="@dimen/regularText">
+
+</TextView>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/fragment_build_intent.xml b/samples/IntentPlayground/res/layout/fragment_build_intent.xml
new file mode 100644
index 0000000..5cc5f47
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/fragment_build_intent.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/build_intent_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginEnd="@dimen/smallMargin"
+    android:layout_marginLeft="@dimen/smallMargin"
+    android:layout_marginRight="@dimen/smallMargin"
+    android:layout_marginStart="@dimen/smallMargin"
+    android:layout_marginTop="@dimen/smallMargin"
+    android:background="@drawable/card_background"
+    android:elevation="@dimen/cardElevation"
+    android:orientation="vertical"
+    android:padding="@dimen/medMargin">
+
+    <TextView
+        android:id="@+id/build_intent"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/build_intent"
+        android:textAppearance="@style/title" />
+
+    <TextView
+        android:id="@+id/flags_hint"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/build_intent_caption" />
+
+    <LinearLayout
+        android:id="@+id/build_intent_flags"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:paddingBottom="@dimen/smallMargin"
+        android:paddingTop="@dimen/smallMargin" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dividerHeight"
+        android:layout_marginVertical="@dimen/smallMargin"
+        android:background="@drawable/divider" />
+
+    <TextView
+        android:id="@+id/textView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginVertical="@dimen/smallMargin"
+        android:text="@string/target_activity" />
+
+    <RadioGroup
+        android:id="@+id/radioGroup_launchMode"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:checkedButton="@+id/radio_launchMode_standard"
+        android:orientation="vertical" />
+
+    <Button
+        android:id="@+id/launch_button"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:onClick="launchActivity"
+        android:text="@string/launch_activity_button" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/fragment_current_task.xml b/samples/IntentPlayground/res/layout/fragment_current_task.xml
new file mode 100644
index 0000000..d299f8b
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/fragment_current_task.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_margin="@dimen/smallMargin"
+    android:background="@drawable/card_background"
+    android:elevation="@dimen/cardElevation"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/medMargin"
+    android:paddingEnd="@dimen/fullMargin"
+    android:paddingLeft="@dimen/fullMargin"
+    android:paddingRight="@dimen/fullMargin"
+    android:paddingStart="@dimen/fullMargin"
+    android:paddingTop="@dimen/medMargin">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/medMargin"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/medMargin"
+            android:text="@string/current_task"
+            android:textAppearance="@style/medium" />
+
+        <TextView
+            android:id="@+id/current_task"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/current_task_placeholder"
+            android:textAppearance="@style/normal" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/medMargin"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/medMargin"
+            android:text="@string/current_activity"
+            android:textAppearance="@style/medium" />
+
+        <TextView
+            android:id="@+id/current_activity"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/current_activity_placeholder"
+            android:textAppearance="@style/normal" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/medMargin"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/medMargin"
+            android:text="@string/last_task"
+            android:textAppearance="@style/medium" />
+
+        <TextView
+            android:id="@+id/last_task"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/last_task_placeholder"
+            android:textAppearance="@style/normal" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/medMargin"
+            android:text="@string/last_activity"
+            android:textAppearance="@style/medium" />
+
+        <TextView
+            android:id="@+id/last_activity"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/last_activity_placeholder"
+            android:textAppearance="@style/normal" />
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/fragment_intent.xml b/samples/IntentPlayground/res/layout/fragment_intent.xml
new file mode 100644
index 0000000..76e8857
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/fragment_intent.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/intent_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginEnd="@dimen/smallMargin"
+    android:layout_marginLeft="@dimen/smallMargin"
+    android:layout_marginRight="@dimen/smallMargin"
+    android:layout_marginStart="@dimen/smallMargin"
+    android:layout_marginTop="@dimen/smallMargin"
+    android:background="@drawable/card_background"
+    android:elevation="@dimen/cardElevation"
+    android:orientation="vertical"
+    android:padding="@dimen/medMargin">
+
+    <TextView
+        android:id="@+id/editText"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:contentDescription="@string/current_intent_label_description"
+        android:inputType="none"
+        android:maxLines="1"
+        android:text="@string/intent_fragment_title"
+        android:textAppearance="@style/title" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/smallMargin"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/actionLabel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/smallMargin"
+            android:contentDescription="@string/action_label_description"
+            android:text="@string/action_label"
+            android:textAppearance="@style/medium" />
+
+        <TextView
+            android:id="@+id/intentAction"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/action_placeholder"
+            android:textAppearance="@style/normal" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/smallMargin"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/uriLabel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/smallMargin"
+            android:contentDescription="@string/data_uri_label_description"
+            android:text="@string/data_uri_label"
+            android:textAppearance="@style/medium" />
+
+        <TextView
+            android:id="@+id/intentUri"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/data_uri_placeholder"
+            android:textAppearance="@style/normal" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/smallMargin"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/typeLabel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/smallMargin"
+            android:contentDescription="@string/type_label_description"
+            android:text="@string/type_label"
+            android:textAppearance="@style/medium" />
+
+        <TextView
+            android:id="@+id/intentType"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/type_placeholder"
+            android:textAppearance="@style/normal" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/smallMargin"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/packageLabel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/smallMargin"
+            android:contentDescription="@string/package_label_description"
+            android:text="@string/package_label"
+            android:textAppearance="@style/medium" />
+
+        <TextView
+            android:id="@+id/intentPackage"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/package_placeholder"
+            android:textAppearance="@style/normal" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/smallMargin"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/categoryLabel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/smallMargin"
+            android:contentDescription="@string/category_label_description"
+            android:text="@string/category_label"
+            android:textAppearance="@style/medium" />
+
+        <LinearLayout
+            android:id="@+id/intentCategories"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:paddingBottom="@dimen/smallMargin"
+            android:paddingTop="@dimen/smallMargin" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/smallMargin"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/flagsLabel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="@dimen/smallMargin"
+            android:contentDescription="@string/flags_label_description"
+            android:text="@string/flags_label"
+            android:textAppearance="@style/medium" />
+
+        <LinearLayout
+            android:id="@+id/intentFlags"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:paddingBottom="@dimen/smallMargin"
+            android:paddingTop="@dimen/smallMargin" />
+
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/fragment_intent_dialog.xml b/samples/IntentPlayground/res/layout/fragment_intent_dialog.xml
new file mode 100644
index 0000000..eb8d6ad
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/fragment_intent_dialog.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical" android:layout_width="wrap_content"
+    android:layout_height="match_parent"
+    android:minWidth="@dimen/dialogWidth">
+
+    <ListView
+        android:id="@+id/flag_list"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_weight="1" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="right"
+        android:orientation="horizontal"
+        android:paddingEnd="@dimen/smallMargin">
+
+        <Button
+            android:id="@+id/copy_flags_button"
+            style="@android:style/Widget.Material.Light.Button.Borderless.Colored"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Use flags for next launch" />
+
+        <Button
+            android:id="@+id/dialog_cancel"
+            style="@android:style/Widget.Material.Light.Button.Borderless.Colored"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/smallMargin"
+            android:text="@android:string/cancel" />
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/fragment_tree.xml b/samples/IntentPlayground/res/layout/fragment_tree.xml
new file mode 100644
index 0000000..8856e79
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/fragment_tree.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/task_tree_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_margin="@dimen/smallMargin"
+    android:background="@drawable/card_background"
+    android:elevation="@dimen/cardElevation"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/task_tree_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/smallMargin"
+        android:layout_marginStart="@dimen/medMargin"
+        android:layout_marginTop="@dimen/medMargin"
+        android:text="@string/task_tree_title"
+        android:textAppearance="@style/title" />
+    <LinearLayout
+        android:id="@+id/task_tree"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:divider="@drawable/divider"
+        android:showDividers="middle"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/section_header.xml b/samples/IntentPlayground/res/layout/section_header.xml
new file mode 100644
index 0000000..5edf23d
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/section_header.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:padding="@dimen/smallMargin">
+
+    <TextView
+        android:id="@+id/header_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/intent_section_title"
+        android:textAppearance="@style/subsection" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/simple_list_item.xml b/samples/IntentPlayground/res/layout/simple_list_item.xml
new file mode 100644
index 0000000..02c5d45
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/simple_list_item.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/text1"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:text="@string/placeholder" />
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/layout/task_node.xml b/samples/IntentPlayground/res/layout/task_node.xml
new file mode 100644
index 0000000..9d1d0d9
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/task_node.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:gravity="center_vertical|left"
+    android:layout_height="@dimen/listItem" >
+
+    <TextView
+        android:id="@+id/task_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/fullMargin"
+        android:layout_weight="0"
+        android:text="@string/placeholder"
+        android:textAppearance="@style/medium"
+        android:textSize="@dimen/regularText" />
+
+    <TextView
+        android:id="@+id/task_id"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_weight="0"
+        android:text="@string/placeholder"
+        android:textAppearance="@style/medium"
+        android:textSize="@dimen/regularText" />
+
+    <TextView
+        android:id="@+id/num_activities"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/medMargin"
+        android:layout_marginStart="@dimen/medMargin"
+        android:layout_weight="1"
+        android:text="@string/placeholder"
+        android:textSize="@dimen/smallText" />
+
+    <ImageView
+        android:id="@+id/group_indicator"
+        android:layout_width="@dimen/listControl"
+        android:layout_height="@dimen/listControl"
+        android:layout_marginEnd="@dimen/fullMargin"
+        android:src="@drawable/expand_more_mtrl" />
+</LinearLayout>
diff --git a/samples/IntentPlayground/res/layout/tree_node_composite.xml b/samples/IntentPlayground/res/layout/tree_node_composite.xml
new file mode 100644
index 0000000..e944762
--- /dev/null
+++ b/samples/IntentPlayground/res/layout/tree_node_composite.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <LinearLayout
+        android:id="@+id/group_item"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical" />
+    <LinearLayout
+        android:id="@+id/child_item"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:visibility="gone"
+        android:paddingBottom="@dimen/medMargin" />
+
+    <LinearLayout
+        android:id="@+id/move_task_to_front_bar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="end"
+        android:orientation="horizontal"
+        android:paddingBottom="@dimen/medMargin"
+        android:paddingEnd="@dimen/smallMargin"
+        android:paddingStart="@dimen/smallMargin"
+        android:visibility="gone" >
+
+        <Button
+            android:id="@+id/kill_task_button"
+            style="@style/flatButton"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="0"
+            android:text="@string/kill_task_button" />
+
+        <Button
+            android:id="@+id/move_task_to_front_button"
+            style="@style/flatButton"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="0"
+            android:text="@string/move_to_front" />
+
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/mipmap-hdpi/ic_launcher.png b/samples/IntentPlayground/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..cde69bc
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-hdpi/ic_launcher_round.png b/samples/IntentPlayground/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..9a078e3
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-mdpi/ic_launcher.png b/samples/IntentPlayground/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c133a0c
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-mdpi/ic_launcher_round.png b/samples/IntentPlayground/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..efc028a
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-xhdpi/ic_launcher.png b/samples/IntentPlayground/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..bfa42f0
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-xhdpi/ic_launcher_round.png b/samples/IntentPlayground/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..3af2608
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-xxhdpi/ic_launcher.png b/samples/IntentPlayground/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..324e72c
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-xxhdpi/ic_launcher_round.png b/samples/IntentPlayground/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..9bec2e6
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-xxxhdpi/ic_launcher.png b/samples/IntentPlayground/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..aee44e1
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/IntentPlayground/res/mipmap-xxxhdpi/ic_launcher_round.png b/samples/IntentPlayground/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..34947cd
--- /dev/null
+++ b/samples/IntentPlayground/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/samples/IntentPlayground/res/values/colors.xml b/samples/IntentPlayground/res/values/colors.xml
new file mode 100644
index 0000000..6e7ce91
--- /dev/null
+++ b/samples/IntentPlayground/res/values/colors.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<resources>
+    <color name="colorPrimary">#3F51B5</color>
+    <color name="colorPrimaryDark">#303F9F</color>
+    <color name="colorAccent">#FF4081</color>
+    <!-- Material design colours from
+        https://material.io/guidelines/style/color.html#color-color-palette -->
+    <color name="md_red_500">#F44336</color>
+    <color name="md_pink_500">#E91E63</color>
+    <color name="md_purple_500">#9C27B0</color>
+    <color name="md_deep_purple_500">#673AB7</color>
+    <color name="md_indigo_500">#3F51B5</color>
+    <color name="md_blue_500">#2196F3</color>
+    <color name="md_light_blue_500">#03A9F4</color>
+    <color name="md_cyan_500">#00BCD4</color>
+    <color name="md_teal_500">#009688</color>
+    <color name="md_green_500">#4CAF50</color>
+    <color name="md_light_green_500">#8BC34A</color>
+    <color name="md_lime_500">#CDDC39</color>
+    <color name="md_grey_500">#9E9E9E</color>
+    <color name="md_amber_500">#FFC107</color>
+    <color name="md_yellow_500">#FFEB3B</color>
+    <color name="md_orange_500">#FF9800</color>
+    <color name="md_deep_orange_500">#FF5722</color>
+    <color name="md_brown_500">#795548</color>
+    <color name="md_blue_grey_500">#607D8B</color>
+    <color name="defaultTint">@color/md_teal_500</color>
+    <color name="labelText">@android:color/white</color>
+</resources>
diff --git a/samples/IntentPlayground/res/values/dimens.xml b/samples/IntentPlayground/res/values/dimens.xml
new file mode 100644
index 0000000..73e89fe
--- /dev/null
+++ b/samples/IntentPlayground/res/values/dimens.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <dimen name="dialogWidth">@android:dimen/dialog_min_width_major</dimen>
+    <dimen name="smallMargin">8dp</dimen>
+    <dimen name="medMargin">16dp</dimen>
+    <dimen name="fullMargin">24dp</dimen>
+    <dimen name="blockMargin">32dp</dimen>
+    <dimen name="cardElevation">2dp</dimen>
+    <dimen name="titleText">20sp</dimen>
+    <dimen name="regularText">16sp</dimen>
+    <dimen name="smallText">12sp</dimen>
+    <dimen name="listItem">48dp</dimen>
+    <dimen name="listIcon">48dp</dimen>
+    <dimen name="listControl">24dp</dimen>
+    <dimen name="listLabelTextBox">24dp</dimen>
+    <dimen name="dividerHeight">1dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/samples/IntentPlayground/res/values/strings.xml b/samples/IntentPlayground/res/values/strings.xml
new file mode 100644
index 0000000..83f39a8
--- /dev/null
+++ b/samples/IntentPlayground/res/values/strings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<resources>
+    <string name="app_name">Intent Playground</string>
+    <string name="task_id">com.example.android.intentplayground.taskId</string>
+    <string name="activity_index">com.example.android.intentplayground.activityIndex</string>
+    <string name="activity_name">CompName</string>
+    <string name="activity_label">#1</string>
+    <string name="intent_button_description">This button triggers the intent list dialog for this activity</string>
+    <string name="build_intent">Build Intent</string>
+    <string name="build_intent_caption">Select flags with which the intent for the launched activity will be built:</string>
+    <string name="target_activity">Select the target activity:</string>
+    <string name="launch_activity_button">Launch activity</string>
+    <string name="activity_name_placeholder">Activity Name</string>
+    <string name="intent_button_tooltip">View Intent flags</string>
+    <string name="activity_radio_description">Activity description</string>
+    <string name="checkbox_placeholder">CheckBox</string>
+    <string name="dialog_intent_flag_placeholder">intent flag</string>
+    <string name="current_task">Current Task</string>
+    <string name="current_task_placeholder">None</string>
+    <string name="current_activity">Current Activity</string>
+    <string name="current_activity_placeholder">None</string>
+    <string name="last_task">Last Task</string>
+    <string name="last_task_placeholder">None</string>
+    <string name="last_activity">Last Activity</string>
+    <string name="last_activity_placeholder">None</string>
+    <string name="current_intent_label_description">Intent passed to current activity</string>
+    <string name="intent_fragment_title">Current Intent</string>
+    <string name="action_label_description">Label for the action of the current intent</string>
+    <string name="action_label">Action</string>
+    <string name="action_placeholder">which action?</string>
+    <string name="data_uri_label_description">Label for the action of the current intent</string>
+    <string name="data_uri_label">Data URI</string>
+    <string name="data_uri_placeholder">://</string>
+    <string name="type_label_description">Label for the action of the current intent</string>
+    <string name="type_label">Type</string>
+    <string name="type_placeholder">which action?</string>
+    <string name="package_label_description">Label for the action of the current intent</string>
+    <string name="package_label">Package</string>
+    <string name="package_placeholder">which action?</string>
+    <string name="category_label_description">Label for the action of the current intent</string>
+    <string name="category_label">Categories</string>
+    <string name="flags_label_description">Label for the action of the current intent</string>
+    <string name="flags_label">Flags</string>
+    <string name="task_tree_title">Hierarchy</string>
+    <string name="intent_section_title">Title</string>
+    <string name="placeholder">placeholder</string>
+    <string name="kill_task_button">remove</string>
+    <string name="move_to_front">Move to front</string>
+    <string name="current_task_hierarchy_title">Current Hierarchy</string>
+    <string name="expected_task_hierarchy_title">Expected Hierarchy</string>
+</resources>
diff --git a/samples/IntentPlayground/res/values/styles.xml b/samples/IntentPlayground/res/values/styles.xml
new file mode 100644
index 0000000..ef4cd22
--- /dev/null
+++ b/samples/IntentPlayground/res/values/styles.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+<resources>
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="@android:style/Theme.Material.Light">
+        <item name="android:colorPrimary">@color/colorPrimary</item>
+        <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
+        <item name="android:colorAccent">@color/colorAccent</item>
+    </style>
+    <style name="flatButton" parent="@android:style/Widget.Material.Light.Button.Borderless.Colored" />
+    <style name="title" parent="@android:style/TextAppearance.Material.Title" />
+    <style name="normal" parent="@android:style/TextAppearance.Material.Body1" />
+    <style name="medium" parent="@android:style/TextAppearance.Material.Body2" />
+    <style name="caption" parent="@android:style/TextAppearance.Material.Caption" />
+    <style name="subsection" parent="@android:style/TextAppearance.Material.Medium" />
+</resources>
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/BaseActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/BaseActivity.java
new file mode 100644
index 0000000..b9b70e1
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/BaseActivity.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.FragmentManager;
+import android.app.FragmentTransaction;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.LinearLayout;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * All of the other activities extend BaseActivity, the shared functionality is implemented here
+ */
+public abstract class BaseActivity extends Activity {
+    public final static String LAUNCH_FORWARD = "com.example.android.launchForward";
+    public final static String BUILDER_FRAGMENT = "com.example.android.builderFragment";
+    protected ComponentName mActivityToLaunch;
+    protected List<ActivityManager.AppTask> mTasks;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        if (BuildConfig.DEBUG) Log.d(this.getLocalClassName(), "onCreate()");
+        Intent intent = getIntent();
+        FragmentManager fragmentManager = getFragmentManager();
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        transaction.add(R.id.fragment_container, new CurrentTaskFragment());
+        TreeFragment currentTaskFrag = new TreeFragment();
+        Bundle args = new Bundle();
+        args.putString(TreeFragment.FRAGMENT_TITLE,
+                getString(R.string.current_task_hierarchy_title));
+        currentTaskFrag.setArguments(args);
+        transaction.add(R.id.fragment_container, currentTaskFrag);
+
+        if (intent.hasExtra(TestBase.EXPECTED_HIERARCHY)) {
+            // That means this activity was launched as a test show the result fragment
+            TreeFragment expectedView = new TreeFragment();
+            Bundle expectedArgs = new Bundle();
+            expectedArgs.putParcelable(TreeFragment.TREE_NODE,
+                    intent.getParcelableExtra(TestBase.EXPECTED_HIERARCHY));
+            expectedArgs.putString(TreeFragment.FRAGMENT_TITLE,
+                    getString(R.string.expected_task_hierarchy_title));
+            expectedView.setArguments(expectedArgs);
+            transaction.add(R.id.fragment_container, expectedView);
+        }
+
+        transaction.add(R.id.fragment_container, new IntentFragment());
+        transaction.add(R.id.fragment_container, new IntentBuilderFragment(), BUILDER_FRAGMENT);
+        transaction.commit();
+
+        if (intent.hasExtra(LAUNCH_FORWARD)) {
+            ArrayList<Intent> intents = intent.getParcelableArrayListExtra(LAUNCH_FORWARD);
+            if (!intents.isEmpty()) {
+                Intent nextIntent = intents.remove(0);
+                nextIntent.putParcelableArrayListExtra(LAUNCH_FORWARD, intents);
+                if (BuildConfig.DEBUG) {
+                    Log.d(this.getLocalClassName(),
+                            LAUNCH_FORWARD + " " + nextIntent.getComponent().toString());
+                }
+                startActivity(nextIntent);
+            }
+        }
+    }
+
+    /**
+     * Launches activity with the selected options
+     */
+    public void launchActivity(View view) {
+        Intent customIntent = new Intent();
+        LinearLayout flagBuilder = findViewById(R.id.build_intent_flags);
+        // Gather flags from flag builder checkbox list
+        childrenOfGroup(flagBuilder, CheckBox.class)
+                .forEach(checkbox -> {
+                    int flagVal = FlagUtils.value(checkbox.getText().toString());
+                    if (checkbox.isChecked()) customIntent.addFlags(flagVal);
+                    else customIntent.removeFlags(flagVal);
+                });
+        customIntent.setComponent(mActivityToLaunch);
+        startActivity(customIntent);
+    }
+
+    /**
+     * Convenience method to retrieve children of a certain type from a {@link ViewGroup}
+     * @param group the ViewGroup to retrieve children from
+     */
+    protected static <T> List<T> childrenOfGroup(ViewGroup group, Class<T> viewType) {
+        List<T> list = new LinkedList<>();
+        for (int i = 0; i < group.getChildCount(); i++) {
+            View v = group.getChildAt(i);
+            if (viewType.isAssignableFrom(v.getClass())) list.add(viewType.cast(v));
+        }
+        return list;
+    }
+
+    @Override
+    protected void onNewIntent(Intent intent) {
+        super.onNewIntent(intent);
+        setIntent(intent);
+    }
+}
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/ClearTaskOnLaunchActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/ClearTaskOnLaunchActivity.java
new file mode 100644
index 0000000..3eea73c
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/ClearTaskOnLaunchActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with clearTaskOnLaunch flag set in AndroidManifest.xml
+ */
+public class ClearTaskOnLaunchActivity extends BaseActivity {}
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchAlwaysActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchAlwaysActivity.java
new file mode 100644
index 0000000..3e018a2
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchAlwaysActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with documentLaunch="always" set in AndroidManifest.xml
+ */
+public class DocumentLaunchAlwaysActivity extends BaseActivity {}
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchIntoActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchIntoActivity.java
new file mode 100644
index 0000000..b66055c
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchIntoActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with documentLaunch="intoExisting" set in AndroidManifest.xml
+ */
+public class DocumentLaunchIntoActivity extends BaseActivity {}
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchNeverActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchNeverActivity.java
new file mode 100644
index 0000000..d0e93d6
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/DocumentLaunchNeverActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with documentLaunch="never" set in AndroidManifest.xml
+ */
+public class DocumentLaunchNeverActivity extends BaseActivity {}
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/LauncherActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/LauncherActivity.java
new file mode 100644
index 0000000..70429e4
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/LauncherActivity.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+
+/**
+ * A singleInstance activity that is responsible for a launching a bootstrap stack of activities
+ */
+public class LauncherActivity extends BaseActivity {
+    private TestBase mTester;
+    public static final String TAG = "LauncherActivity";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Node mRoot = new Node(new ComponentName(this, LauncherActivity.class));
+        // Describe initial setup of tasks
+        // create singleTask, singleInstance, and two documents in separate tasks
+        mRoot.addChild( new Node(new ComponentName(this, SingleTaskActivity.class)))
+                .addChild( new Node(new ComponentName(this, DocumentLaunchAlwaysActivity.class)))
+                .addChild( new Node(new ComponentName(this, DocumentLaunchIntoActivity.class)));
+        // Create three tasks with three activities each, with affinity set
+        Node taskAffinity1 = new Node(new ComponentName(this, TaskAffinity1Activity.class));
+        taskAffinity1
+                .addChild(new Node(new ComponentName(this, TaskAffinity1Activity.class)))
+                .addChild(new Node(new ComponentName(this, TaskAffinity1Activity.class)));
+        Node taskAffinity2 = new Node(new ComponentName(this, ClearTaskOnLaunchActivity.class));
+        taskAffinity2
+                .addChild(new Node(new ComponentName(this, TaskAffinity2Activity.class)))
+                .addChild(new Node(new ComponentName(this, TaskAffinity2Activity.class)));
+        Node taskAffinity3 = new Node(new ComponentName(this, TaskAffinity3Activity.class));
+        taskAffinity3
+                .addChild(new Node(new ComponentName(this, TaskAffinity3Activity.class)))
+                .addChild(new Node(new ComponentName(this, TaskAffinity3Activity.class)));
+        mRoot.addChild(taskAffinity1).addChild(taskAffinity2).addChild(taskAffinity3);
+        mTester = new TestBase(this, mRoot);
+        mTester.setupActivities(TestBase.LaunchStyle.TASK_STACK_BUILDER);
+    }
+
+    /**
+     * Launches activity with the selected options
+     */
+    public void launchActivity(Intent customIntent) {
+        customIntent.putExtra(TestBase.EXPECTED_HIERARCHY, mTester.computeExpected(customIntent));
+        startActivity(customIntent);
+    }
+}
\ No newline at end of file
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/NoHistoryActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/NoHistoryActivity.java
new file mode 100644
index 0000000..06dae25
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/NoHistoryActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with noHistory="true" set in AndroidManifest.xml
+ */
+public class NoHistoryActivity extends BaseActivity {}
\ No newline at end of file
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/Shims.java b/samples/IntentPlayground/src/com/example/android/intentplayground/Shims.java
new file mode 100644
index 0000000..46bdaf7
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/Shims.java
@@ -0,0 +1,76 @@
+/** TODO: http://go/java-style#javadoc */
+package com.example.android.intentplayground;
+
+import android.app.Fragment;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.view.View;
+
+import java.util.List;
+import java.util.Map;
+
+class TestBase {
+    static final String EXPECTED_HIERARCHY = "";
+    enum LaunchStyle { TASK_STACK_BUILDER, COMMAND_LINE, LAUNCH_FORWARD }
+    TestBase(Context context, Node hierarchy) {}
+    void setupActivities(LaunchStyle style) {}
+    Node computeExpected(Intent intent) { return null; }
+    static Node describeTaskHierarchy(Context context) { return null; }
+
+}
+class TreeFragment extends Fragment {
+    static final String TREE_NODE = "";
+    static final String FRAGMENT_TITLE = "";
+}
+class CurrentTaskFragment extends Fragment {}
+class IntentFragment extends Fragment {}
+class IntentBuilderFragment extends Fragment implements View.OnClickListener {
+    ComponentName mActivityToLaunch;
+    void selectLaunchMode(View view) {}
+    public void onClick(View view) {}
+    void clearFlags() {}
+    void selectFlags(List<String> flags) {}
+}
+class BuildConfig {
+    static final boolean DEBUG = true;
+}
+class Node implements Parcelable, Comparable<Node> {
+    ComponentName name;
+    boolean isTaskNode;
+    int taskId;
+    static final String TAG = "";
+    public static final Creator<Node> CREATOR = new  Creator<Node>() {
+        @Override
+        public Node createFromParcel(Parcel in) {
+            return new Node(in);
+        }
+
+        @Override
+        public Node[] newArray(int size) {
+            return new Node[size];
+        }
+    };;
+    List<Node> children;
+    Node(ComponentName data) {}
+    Node(int taskId) {}
+    Node(Node other) {}
+    Node(Parcel in) {}
+    Node addChild(Node child) { return null; }
+    boolean equals(Node other) { return false; }
+    public int compareTo(Node o) {return 0;}
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {}
+    @Override
+    public int describeContents() { return 0; }
+}
+class FlagUtils {
+    static List<String> discoverFlags(Intent intent) { return null; }
+    static List<String> intentFlags() { return null; }
+    static Map<String, List<String>> intentFlagsByCategory() { return null; }
+    static int value(String flagName) { return 0; }
+    static List<String> discoverActivityFlags() { return null; }
+    static String camelify(String snake) { return null; }
+}
\ No newline at end of file
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/SingleInstanceActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/SingleInstanceActivity.java
new file mode 100644
index 0000000..9687780
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/SingleInstanceActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with launchMode="singleInstance" set in AndroidManifest.xml
+ */
+public class SingleInstanceActivity extends BaseActivity {}
\ No newline at end of file
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/SingleTaskActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/SingleTaskActivity.java
new file mode 100644
index 0000000..8d3137f
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/SingleTaskActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with launchMode="singleTask" set in AndroidManifest.xml
+ */
+public class SingleTaskActivity extends BaseActivity {}
\ No newline at end of file
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/SingleTopActivity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/SingleTopActivity.java
new file mode 100644
index 0000000..b4f846e
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/SingleTopActivity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with launchMode="singleTop" set in AndroidManifest.xml
+ */
+public class SingleTopActivity extends BaseActivity {}
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity1Activity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity1Activity.java
new file mode 100644
index 0000000..14609d8
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity1Activity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with taskAffinity=".t1" set in AndroidManifest.xml
+ */
+public class TaskAffinity1Activity extends BaseActivity {}
\ No newline at end of file
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity2Activity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity2Activity.java
new file mode 100644
index 0000000..bf1e9e9
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity2Activity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with taskAffinity=".t2" set in AndroidManifest.xml
+ */
+public class TaskAffinity2Activity extends BaseActivity {}
\ No newline at end of file
diff --git a/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity3Activity.java b/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity3Activity.java
new file mode 100644
index 0000000..c48e9fd
--- /dev/null
+++ b/samples/IntentPlayground/src/com/example/android/intentplayground/TaskAffinity3Activity.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2017 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.example.android.intentplayground;
+
+/**
+ * An activity with taskAffinity=".t3" set in AndroidManifest.xml
+ */
+public class TaskAffinity3Activity extends BaseActivity {}
\ No newline at end of file
diff --git a/sdk/build_tools_source.prop_template b/sdk/build_tools_source.prop_template
index f043706..a6bd572 100644
--- a/sdk/build_tools_source.prop_template
+++ b/sdk/build_tools_source.prop_template
@@ -1,4 +1,4 @@
 Pkg.UserSrc=false
-Pkg.Revision=${PLATFORM_SDK_VERSION}.0.1
-#Pkg.Revision=26.0.0 rc1
+#Pkg.Revision=${PLATFORM_SDK_VERSION}.0.2
+Pkg.Revision=26.0.2
 
diff --git a/sys-img/advancedFeatures.ini b/sys-img/advancedFeatures.ini
index 445312f..ad39ea4 100644
--- a/sys-img/advancedFeatures.ini
+++ b/sys-img/advancedFeatures.ini
@@ -1 +1,6 @@
 GrallocSync = on
+LogcatPipe = on
+GLAsyncSwap = on
+GLESDynamicVersion = on
+GLDMA = on
+EncryptUserData = on
diff --git a/sys-img/advancedFeatures.ini.arm b/sys-img/advancedFeatures.ini.arm
new file mode 100644
index 0000000..9886f75
--- /dev/null
+++ b/sys-img/advancedFeatures.ini.arm
@@ -0,0 +1,5 @@
+GrallocSync = on
+LogcatPipe = on
+GLAsyncSwap = on
+GLESDynamicVersion = on
+GLDMA = on
diff --git a/testrunner/test_defs.xml b/testrunner/test_defs.xml
index 1352699..8fdf5ef 100644
--- a/testrunner/test_defs.xml
+++ b/testrunner/test_defs.xml
@@ -143,6 +143,12 @@
     coverage_target="framework"
     continuous="true" />
 
+<test name="android-common-ex"
+    build_path="frameworks/ex/common/tests"
+    package="com.android.common.tests"
+    coverage_target="framework"
+    continuous="true" />
+
 <test name="ex-variablespeed"
     build_path="frameworks/ex/variablespeed/tests"
     package="com.android.ex.variablespeed.tests"
diff --git a/tools/emulator/test-apps/SmokeTests/AndroidManifest.xml b/tools/emulator/test-apps/SmokeTests/AndroidManifest.xml
index 8843a00..6daafa9 100644
--- a/tools/emulator/test-apps/SmokeTests/AndroidManifest.xml
+++ b/tools/emulator/test-apps/SmokeTests/AndroidManifest.xml
@@ -19,7 +19,8 @@
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.READ_SMS" />
-    <uses-sdk android:minSdkVersion="4" />
+    <uses-sdk android:minSdkVersion="4"
+              android:targetSdkVersion="24"/>
     <instrumentation android:targetPackage="com.android.emulator.smoketests"
                      android:name="android.support.test.runner.AndroidJUnitRunner" />
     <application  android:label="Emulator Smoke Tests">
diff --git a/tools/logblame/logs.py b/tools/logblame/logs.py
index 400a39b..6982e06 100644
--- a/tools/logblame/logs.py
+++ b/tools/logblame/logs.py
@@ -5,6 +5,7 @@
 BUFFER_BEGIN = re.compile("^--------- beginning of (.*)$")
 BUFFER_SWITCH = re.compile("^--------- switch to (.*)$")
 HEADER = re.compile("^\\[ (\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d.\\d\\d\\d) +(.+?): *(\\d+): *(\\d+) *([EWIDV])/(.*?) *\\]$")
+HEADER_TYPE2 = re.compile("^(\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d.\\d\\d\\d) *(\\d+) *(\\d+) *([EWIDV]) ([^ :]*?): (.*?)$")
 CHATTY_IDENTICAL = re.compile("^.* identical (\\d+) lines$")
 
 STATE_BEGIN = 0
@@ -135,6 +136,25 @@
       state = STATE_HEADER
       continue
 
+    m = HEADER_TYPE2.match(line)
+    if m:
+      if logLine:
+        yield logLine
+      logLine = LogLine(
+            buf=buf,
+            timestamp=m.group(1),
+            uid="0",
+            pid=m.group(2),
+            tid=m.group(3),
+            level=m.group(4),
+            tag=m.group(5),
+            text=m.group(6)
+          )
+      previous = logLine
+      logLine.process = processes.FindPid(logLine.pid, logLine.uid)
+      state = STATE_BEGIN
+      continue
+
     if not len(line):
       if state == STATE_BLANK:
         if logLine:
diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv
new file mode 100644
index 0000000..f18c760
--- /dev/null
+++ b/vndk/tools/definition-tool/datasets/eligible-list-o-mr1-release.csv
@@ -0,0 +1,576 @@
+Path,Tag,Comments
+/system/${LIB}/android.frameworks.displayservice@1.0.so,VNDK,
+/system/${LIB}/android.frameworks.schedulerservice@1.0.so,VNDK,
+/system/${LIB}/android.frameworks.sensorservice@1.0.so,VNDK,
+/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK,
+/system/${LIB}/android.hardware.audio.common@2.0-util.so,VNDK,
+/system/${LIB}/android.hardware.audio.common@2.0.so,VNDK,
+/system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK,
+/system/${LIB}/android.hardware.audio@2.0.so,VNDK,
+/system/${LIB}/android.hardware.automotive.evs@1.0.so,VNDK,
+/system/${LIB}/android.hardware.automotive.vehicle@2.0.so,VNDK,
+/system/${LIB}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
+/system/${LIB}/android.hardware.bluetooth@1.0.so,VNDK,
+/system/${LIB}/android.hardware.boot@1.0.so,VNDK,
+/system/${LIB}/android.hardware.broadcastradio@1.0.so,VNDK,
+/system/${LIB}/android.hardware.broadcastradio@1.1.so,VNDK,
+/system/${LIB}/android.hardware.camera.common@1.0.so,VNDK,
+/system/${LIB}/android.hardware.camera.device@1.0.so,VNDK,
+/system/${LIB}/android.hardware.camera.device@3.2.so,VNDK,
+/system/${LIB}/android.hardware.camera.device@3.3.so,VNDK,
+/system/${LIB}/android.hardware.camera.metadata@3.2.so,VNDK,
+/system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK,
+/system/${LIB}/android.hardware.cas.native@1.0.so,VNDK,
+/system/${LIB}/android.hardware.cas@1.0.so,VNDK,
+/system/${LIB}/android.hardware.configstore-utils.so,VNDK,
+/system/${LIB}/android.hardware.configstore@1.0.so,VNDK,
+/system/${LIB}/android.hardware.contexthub@1.0.so,VNDK,
+/system/${LIB}/android.hardware.drm@1.0.so,VNDK,
+/system/${LIB}/android.hardware.dumpstate@1.0.so,VNDK,
+/system/${LIB}/android.hardware.gatekeeper@1.0.so,VNDK,
+/system/${LIB}/android.hardware.gnss@1.0.so,VNDK,
+/system/${LIB}/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
+/system/${LIB}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
+/system/${LIB}/android.hardware.graphics.common@1.0.so,VNDK-SP,
+/system/${LIB}/android.hardware.graphics.composer@2.1.so,VNDK,
+/system/${LIB}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
+/system/${LIB}/android.hardware.health@1.0.so,VNDK,
+/system/${LIB}/android.hardware.ir@1.0.so,VNDK,
+/system/${LIB}/android.hardware.keymaster@3.0.so,VNDK,
+/system/${LIB}/android.hardware.light@2.0.so,VNDK,
+/system/${LIB}/android.hardware.media.omx@1.0.so,VNDK,
+/system/${LIB}/android.hardware.media@1.0.so,VNDK,
+/system/${LIB}/android.hardware.memtrack@1.0.so,VNDK,
+/system/${LIB}/android.hardware.neuralnetworks@1.0.so,VNDK,
+/system/${LIB}/android.hardware.nfc@1.0.so,VNDK,
+/system/${LIB}/android.hardware.oemlock@1.0.so,VNDK,
+/system/${LIB}/android.hardware.power@1.0.so,VNDK,
+/system/${LIB}/android.hardware.power@1.1.so,VNDK,
+/system/${LIB}/android.hardware.radio.deprecated@1.0.so,VNDK,
+/system/${LIB}/android.hardware.radio@1.0.so,VNDK,
+/system/${LIB}/android.hardware.radio@1.1.so,VNDK,
+/system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP,
+/system/${LIB}/android.hardware.sensors@1.0.so,VNDK,
+/system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK,
+/system/${LIB}/android.hardware.tests.libhwbinder@1.0.so,VNDK,
+/system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK,
+/system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK,
+/system/${LIB}/android.hardware.thermal@1.0.so,VNDK,
+/system/${LIB}/android.hardware.thermal@1.1.so,VNDK,
+/system/${LIB}/android.hardware.tv.cec@1.0.so,VNDK,
+/system/${LIB}/android.hardware.tv.input@1.0.so,VNDK,
+/system/${LIB}/android.hardware.usb@1.0.so,VNDK,
+/system/${LIB}/android.hardware.usb@1.1.so,VNDK,
+/system/${LIB}/android.hardware.vibrator@1.0.so,VNDK,
+/system/${LIB}/android.hardware.vibrator@1.1.so,VNDK,
+/system/${LIB}/android.hardware.vr@1.0.so,VNDK,
+/system/${LIB}/android.hardware.weaver@1.0.so,VNDK,
+/system/${LIB}/android.hardware.wifi.offload@1.0.so,VNDK,
+/system/${LIB}/android.hardware.wifi.supplicant@1.0.so,VNDK,
+/system/${LIB}/android.hardware.wifi@1.0.so,VNDK,
+/system/${LIB}/android.hardware.wifi@1.1.so,VNDK,
+/system/${LIB}/android.hidl.allocator@1.0.so,VNDK,
+/system/${LIB}/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP,
+/system/${LIB}/android.hidl.token@1.0-utils.so,VNDK,
+/system/${LIB}/android.hidl.token@1.0.so,VNDK,
+/system/${LIB}/android.system.net.netd@1.0.so,VNDK,
+/system/${LIB}/android.system.wifi.keystore@1.0.so,VNDK,
+/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY,
+/system/${LIB}/hw/audio.a2dp.default.so,FWK-ONLY,
+/system/${LIB}/hw/bluetooth.default.so,FWK-ONLY,
+/system/${LIB}/hw/keystore.default.so,FWK-ONLY,
+/system/${LIB}/ld-android.so,LL-NDK-Indirect,
+/system/${LIB}/libEGL.so,SP-NDK,
+/system/${LIB}/libETC1.so,FWK-ONLY,
+/system/${LIB}/libFFTEm.so,FWK-ONLY,
+/system/${LIB}/libGLESv1_CM.so,SP-NDK,
+/system/${LIB}/libGLESv2.so,SP-NDK,
+/system/${LIB}/libGLESv3.so,SP-NDK,
+/system/${LIB}/libLLVM.so,FWK-ONLY,
+/system/${LIB}/libOpenMAXAL.so,FWK-ONLY,
+/system/${LIB}/libOpenSLES.so,FWK-ONLY,
+/system/${LIB}/libRS.so,LL-NDK,
+/system/${LIB}/libRSCpuRef.so,VNDK-SP,
+/system/${LIB}/libRSDriver.so,VNDK-SP,
+/system/${LIB}/libRS_internal.so,VNDK-SP,
+/system/${LIB}/libRScpp.so,FWK-ONLY,
+/system/${LIB}/libWnnEngDic.so,FWK-ONLY,
+/system/${LIB}/libWnnJpnDic.so,FWK-ONLY,
+/system/${LIB}/libaaudio.so,FWK-ONLY,
+/system/${LIB}/libadf.so,VNDK,
+/system/${LIB}/libandroid.so,FWK-ONLY,
+/system/${LIB}/libandroid_net.so,LL-NDK,
+/system/${LIB}/libandroid_runtime.so,FWK-ONLY,
+/system/${LIB}/libandroid_servers.so,FWK-ONLY,
+/system/${LIB}/libandroidfw.so,FWK-ONLY,
+/system/${LIB}/libappfuse.so,FWK-ONLY,
+/system/${LIB}/libart-compiler.so,FWK-ONLY,
+/system/${LIB}/libart-dexlayout.so,FWK-ONLY,
+/system/${LIB}/libart-disassembler.so,FWK-ONLY,
+/system/${LIB}/libart.so,FWK-ONLY,
+/system/${LIB}/libaudioclient.so,FWK-ONLY,
+/system/${LIB}/libaudioeffect_jni.so,FWK-ONLY,
+/system/${LIB}/libaudioflinger.so,FWK-ONLY,
+/system/${LIB}/libaudiohal.so,FWK-ONLY,
+/system/${LIB}/libaudiomanager.so,FWK-ONLY,
+/system/${LIB}/libaudiopolicyenginedefault.so,FWK-ONLY,
+/system/${LIB}/libaudiopolicymanager.so,FWK-ONLY,
+/system/${LIB}/libaudiopolicymanagerdefault.so,FWK-ONLY,
+/system/${LIB}/libaudiopolicyservice.so,FWK-ONLY,
+/system/${LIB}/libaudioprocessing.so,FWK-ONLY,
+/system/${LIB}/libaudioroute.so,VNDK,
+/system/${LIB}/libaudiospdif.so,FWK-ONLY,
+/system/${LIB}/libaudioutils.so,VNDK,
+/system/${LIB}/libavservices_minijail.so,FWK-ONLY,"Vendor module should link libavservices_minijail_vendor.so"
+/system/${LIB}/libbacktrace.so,VNDK-SP-Indirect,
+/system/${LIB}/libbase.so,VNDK-SP,
+/system/${LIB}/libbatteryservice.so,FWK-ONLY,
+/system/${LIB}/libbcc.so,FWK-ONLY,
+/system/${LIB}/libbcinfo.so,VNDK-SP,
+/system/${LIB}/libbinder.so,VNDK,
+/system/${LIB}/libbinderwrapper.so,FWK-ONLY,
+/system/${LIB}/libblas.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/libbluetooth_jni.so,FWK-ONLY,
+/system/${LIB}/libbrillo-binder.so,FWK-ONLY,
+/system/${LIB}/libbrillo-stream.so,FWK-ONLY,
+/system/${LIB}/libbrillo.so,FWK-ONLY,
+/system/${LIB}/libc++.so,VNDK-SP,
+/system/${LIB}/libc.so,LL-NDK,
+/system/${LIB}/libc_malloc_debug.so,LL-NDK-Indirect,
+/system/${LIB}/libcamera2ndk.so,FWK-ONLY,
+/system/${LIB}/libcamera_client.so,FWK-ONLY,
+/system/${LIB}/libcamera_metadata.so,VNDK,
+/system/${LIB}/libcameraservice.so,FWK-ONLY,
+/system/${LIB}/libcap.so,VNDK,
+/system/${LIB}/libchrome.so,FWK-ONLY,
+/system/${LIB}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
+/system/${LIB}/libcompiler_rt.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/libcrypto.so,VNDK,
+/system/${LIB}/libcrypto_utils.so,VNDK,
+/system/${LIB}/libcups.so,FWK-ONLY,
+/system/${LIB}/libcurl.so,VNDK,
+/system/${LIB}/libcutils.so,VNDK-SP,
+/system/${LIB}/libdebuggerd_client.so,FWK-ONLY,
+/system/${LIB}/libdefcontainer_jni.so,FWK-ONLY,
+/system/${LIB}/libdiskconfig.so,VNDK,
+/system/${LIB}/libdl.so,LL-NDK,
+/system/${LIB}/libdng_sdk.so,FWK-ONLY,
+/system/${LIB}/libdrmframework.so,FWK-ONLY,
+/system/${LIB}/libdrmframework_jni.so,FWK-ONLY,
+/system/${LIB}/libdumpstateaidl.so,FWK-ONLY,
+/system/${LIB}/libdumpstateutil.so,VNDK,
+/system/${LIB}/libevent.so,VNDK,
+/system/${LIB}/libexif.so,VNDK,
+/system/${LIB}/libexpat.so,VNDK,
+/system/${LIB}/libext2_blkid.so,FWK-ONLY,
+/system/${LIB}/libext2_com_err.so,FWK-ONLY,
+/system/${LIB}/libext2_e2p.so,FWK-ONLY,
+/system/${LIB}/libext2_quota.so,FWK-ONLY,
+/system/${LIB}/libext2_uuid.so,FWK-ONLY,
+/system/${LIB}/libext2fs.so,FWK-ONLY,
+/system/${LIB}/libext4_utils.so,FWK-ONLY,
+/system/${LIB}/libf2fs_sparseblock.so,FWK-ONLY,
+/system/${LIB}/libfilterfw.so,FWK-ONLY,
+/system/${LIB}/libfilterpack_imageproc.so,FWK-ONLY,
+/system/${LIB}/libfmq.so,VNDK,
+/system/${LIB}/libframesequence.so,FWK-ONLY,
+/system/${LIB}/libft2.so,FWK-ONLY-RS,
+/system/${LIB}/libgatekeeper.so,VNDK,
+/system/${LIB}/libgiftranscode.so,FWK-ONLY,
+/system/${LIB}/libgui.so,VNDK,
+/system/${LIB}/libhardware.so,VNDK-SP,
+/system/${LIB}/libhardware_legacy.so,VNDK,
+/system/${LIB}/libharfbuzz_ng.so,FWK-ONLY,
+/system/${LIB}/libhidcommand_jni.so,FWK-ONLY,
+/system/${LIB}/libhidl-gen-utils.so,FWK-ONLY,
+/system/${LIB}/libhidlbase.so,VNDK-SP,
+/system/${LIB}/libhidlmemory.so,VNDK-SP,
+/system/${LIB}/libhidltransport.so,VNDK-SP,
+/system/${LIB}/libhwbinder.so,VNDK-SP,
+/system/${LIB}/libhwui.so,FWK-ONLY,
+/system/${LIB}/libicui18n.so,FWK-ONLY,
+/system/${LIB}/libicuuc.so,FWK-ONLY,
+/system/${LIB}/libimg_utils.so,FWK-ONLY,
+/system/${LIB}/libincident.so,FWK-ONLY,
+/system/${LIB}/libinput.so,FWK-ONLY,
+/system/${LIB}/libinputflinger.so,FWK-ONLY,
+/system/${LIB}/libinputservice.so,FWK-ONLY,
+/system/${LIB}/libion.so,VNDK-SP,
+/system/${LIB}/libiperf.so,FWK-ONLY,
+/system/${LIB}/libiprouteutil.so,FWK-ONLY,
+/system/${LIB}/libjavacore.so,FWK-ONLY,
+/system/${LIB}/libjavacrypto.so,FWK-ONLY,
+/system/${LIB}/libjni_eglfence.so,FWK-ONLY,
+/system/${LIB}/libjni_filtershow_filters.so,FWK-ONLY,
+/system/${LIB}/libjni_jpegstream.so,FWK-ONLY,
+/system/${LIB}/libjni_jpegutil.so,FWK-ONLY,
+/system/${LIB}/libjni_latinime.so,FWK-ONLY,
+/system/${LIB}/libjni_pacprocessor.so,FWK-ONLY,
+/system/${LIB}/libjni_tinyplanet.so,FWK-ONLY,
+/system/${LIB}/libjnigraphics.so,FWK-ONLY,
+/system/${LIB}/libjpeg.so,VNDK,
+/system/${LIB}/libkeymaster_messages.so,VNDK,
+/system/${LIB}/libkeymaster_portable.so,VNDK,
+/system/${LIB}/libkeymaster_staging.so,VNDK,
+/system/${LIB}/libkeystore-engine.so,FWK-ONLY,
+/system/${LIB}/libkeystore_binder.so,FWK-ONLY,
+/system/${LIB}/libldacBT_abr.so,VNDK,
+/system/${LIB}/libldacBT_enc.so,VNDK,
+/system/${LIB}/liblog.so,LL-NDK,
+/system/${LIB}/liblogcat.so,FWK-ONLY,
+/system/${LIB}/liblogwrap.so,FWK-ONLY,
+/system/${LIB}/liblz4.so,VNDK,
+/system/${LIB}/liblzma.so,VNDK-SP-Indirect,
+/system/${LIB}/libm.so,LL-NDK,
+/system/${LIB}/libmdnssd.so,FWK-ONLY,
+/system/${LIB}/libmedia.so,FWK-ONLY,
+/system/${LIB}/libmedia_helper.so,VNDK,
+/system/${LIB}/libmedia_jni.so,FWK-ONLY,
+/system/${LIB}/libmedia_omx.so,VNDK,
+/system/${LIB}/libmediadrm.so,FWK-ONLY,
+/system/${LIB}/libmediaextractorservice.so,FWK-ONLY,
+/system/${LIB}/libmedialogservice.so,FWK-ONLY,
+/system/${LIB}/libmediametrics.so,FWK-ONLY,
+/system/${LIB}/libmediandk.so,FWK-ONLY-RS,
+/system/${LIB}/libmediautils.so,FWK-ONLY,
+/system/${LIB}/libmemtrack.so,VNDK,
+/system/${LIB}/libmemunreachable.so,FWK-ONLY,
+/system/${LIB}/libmetricslogger.so,FWK-ONLY,
+/system/${LIB}/libmidi.so,FWK-ONLY,
+/system/${LIB}/libminijail.so,FWK-ONLY,"Vendor module should link libminijail_vendor.so"
+/system/${LIB}/libminikin.so,FWK-ONLY,
+/system/${LIB}/libmtp.so,FWK-ONLY,
+/system/${LIB}/libnativebridge.so,FWK-ONLY,
+/system/${LIB}/libnativehelper.so,FWK-ONLY,
+/system/${LIB}/libnativeloader.so,FWK-ONLY,
+/system/${LIB}/libnativewindow.so,SP-NDK,
+/system/${LIB}/libnbaio.so,FWK-ONLY,"Vendor module should link libnbaio_mono.so"
+/system/${LIB}/libnetd_client.so,LL-NDK-Indirect,
+/system/${LIB}/libnetdaidl.so,FWK-ONLY,
+/system/${LIB}/libnetlink.so,FWK-ONLY,
+/system/${LIB}/libnetutils.so,VNDK,
+/system/${LIB}/libnl.so,VNDK,
+/system/${LIB}/libopenjdk.so,FWK-ONLY,
+/system/${LIB}/libopenjdkjvm.so,FWK-ONLY,
+/system/${LIB}/libopenjdkjvmti.so,FWK-ONLY,
+/system/${LIB}/libopus.so,VNDK,
+/system/${LIB}/libpac.so,FWK-ONLY,
+/system/${LIB}/libpackagelistparser.so,FWK-ONLY,
+/system/${LIB}/libpagemap.so,VNDK,
+/system/${LIB}/libpcap.so,FWK-ONLY,
+/system/${LIB}/libpcre2.so,VNDK,
+/system/${LIB}/libpcrecpp.so,FWK-ONLY,
+/system/${LIB}/libpdfium.so,FWK-ONLY,
+/system/${LIB}/libpiex.so,VNDK,
+/system/${LIB}/libpixelflinger.so,FWK-ONLY,
+/system/${LIB}/libpng.so,VNDK,
+/system/${LIB}/libpower.so,VNDK,
+/system/${LIB}/libpowermanager.so,FWK-ONLY,
+/system/${LIB}/libprintspooler_jni.so,FWK-ONLY,
+/system/${LIB}/libprocessgroup.so,FWK-ONLY,
+/system/${LIB}/libprocinfo.so,VNDK,
+/system/${LIB}/libprotobuf-cpp-full.so,VNDK,
+/system/${LIB}/libprotobuf-cpp-lite.so,VNDK,
+/system/${LIB}/libradio_metadata.so,VNDK,
+/system/${LIB}/librs_jni.so,FWK-ONLY,
+/system/${LIB}/librtp_jni.so,FWK-ONLY,
+/system/${LIB}/libschedulerservicehidl.so,FWK-ONLY,
+/system/${LIB}/libselinux.so,FWK-ONLY,
+/system/${LIB}/libsensor.so,FWK-ONLY,
+/system/${LIB}/libsensorservice.so,FWK-ONLY,
+/system/${LIB}/libsensorservicehidl.so,FWK-ONLY,
+/system/${LIB}/libservices.so,FWK-ONLY,
+/system/${LIB}/libserviceutility.so,FWK-ONLY,
+/system/${LIB}/libsigchain.so,FWK-ONLY,
+/system/${LIB}/libskia.so,FWK-ONLY,
+/system/${LIB}/libsoftkeymaster.so,FWK-ONLY,
+/system/${LIB}/libsoftkeymasterdevice.so,VNDK,
+/system/${LIB}/libsonic.so,FWK-ONLY,
+/system/${LIB}/libsonivox.so,FWK-ONLY,
+/system/${LIB}/libsoundpool.so,FWK-ONLY,
+/system/${LIB}/libsoundtrigger.so,FWK-ONLY,
+/system/${LIB}/libsoundtriggerservice.so,FWK-ONLY,
+/system/${LIB}/libsparse.so,FWK-ONLY,
+/system/${LIB}/libspeexresampler.so,VNDK,
+/system/${LIB}/libsqlite.so,VNDK,
+/system/${LIB}/libssl.so,VNDK,
+/system/${LIB}/libstagefright.so,FWK-ONLY,
+/system/${LIB}/libstagefright_amrnb_common.so,VNDK,
+/system/${LIB}/libstagefright_enc_common.so,VNDK,
+/system/${LIB}/libstagefright_flacdec.so,VNDK,
+/system/${LIB}/libstagefright_foundation.so,VNDK,
+/system/${LIB}/libstagefright_http_support.so,FWK-ONLY,
+/system/${LIB}/libstagefright_omx.so,VNDK,
+/system/${LIB}/libstagefright_omx_utils.so,VNDK,
+/system/${LIB}/libstagefright_soft_aacdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_aacenc.so,VNDK,
+/system/${LIB}/libstagefright_soft_amrdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_amrnbenc.so,VNDK,
+/system/${LIB}/libstagefright_soft_amrwbenc.so,VNDK,
+/system/${LIB}/libstagefright_soft_avcdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_avcenc.so,VNDK,
+/system/${LIB}/libstagefright_soft_flacdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_flacenc.so,VNDK,
+/system/${LIB}/libstagefright_soft_g711dec.so,VNDK,
+/system/${LIB}/libstagefright_soft_gsmdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_hevcdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_mp3dec.so,VNDK,
+/system/${LIB}/libstagefright_soft_mpeg2dec.so,VNDK,
+/system/${LIB}/libstagefright_soft_mpeg4dec.so,VNDK,
+/system/${LIB}/libstagefright_soft_mpeg4enc.so,VNDK,
+/system/${LIB}/libstagefright_soft_opusdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_rawdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_vorbisdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_vpxdec.so,VNDK,
+/system/${LIB}/libstagefright_soft_vpxenc.so,VNDK,
+/system/${LIB}/libstagefright_xmlparser.so,VNDK,
+/system/${LIB}/libstdc++.so,FWK-ONLY,
+/system/${LIB}/libsurfaceflinger.so,FWK-ONLY,
+/system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY,
+/system/${LIB}/libsuspend.so,VNDK,
+/system/${LIB}/libsync.so,SP-NDK,
+/system/${LIB}/libsysutils.so,VNDK,
+/system/${LIB}/libtextclassifier.so,FWK-ONLY,
+/system/${LIB}/libtinyalsa.so,VNDK,
+/system/${LIB}/libtinyxml2.so,VNDK,
+/system/${LIB}/libui.so,VNDK,
+/system/${LIB}/libunwind.so,VNDK-SP-Indirect,
+/system/${LIB}/libunwindstack.so,VNDK-SP-Indirect,
+/system/${LIB}/libusbhost.so,VNDK,
+/system/${LIB}/libutils.so,VNDK-SP,
+/system/${LIB}/libvintf.so,FWK-ONLY,
+/system/${LIB}/libvixl-arm.so,VNDK,
+/system/${LIB}/libvixl-arm64.so,VNDK,
+/system/${LIB}/libvndksupport.so,LL-NDK,
+/system/${LIB}/libvorbisidec.so,VNDK,
+/system/${LIB}/libvulkan.so,SP-NDK,
+/system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY,
+/system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY,
+/system/${LIB}/libwfds.so,FWK-ONLY,
+/system/${LIB}/libwifi-service.so,FWK-ONLY,
+/system/${LIB}/libwifi-system-iface.so,VNDK,
+/system/${LIB}/libwifi-system.so,FWK-ONLY,
+/system/${LIB}/libwifikeystorehal.so,FWK-ONLY,
+/system/${LIB}/libwilhelm.so,FWK-ONLY,
+/system/${LIB}/libwnndict.so,FWK-ONLY,
+/system/${LIB}/libxml2.so,VNDK,
+/system/${LIB}/libyuv.so,VNDK,
+/system/${LIB}/libz.so,VNDK-SP,
+/system/${LIB}/libziparchive.so,VNDK,
+/system/${LIB}/tests.vendor@1.0.so,VNDK,
+/system/${LIB}/tests.vendor@1.1.so,VNDK,
+/system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hardware.renderscript@1.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libRSCpuRef.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libRSDriver.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libRS_internal.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libbacktrace.so,VNDK-SP-Indirect,
+/system/${LIB}/vndk-sp/libbase.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libbcinfo.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libblas.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/vndk-sp/libc++.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libcompiler_rt.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/vndk-sp/libcutils.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhardware.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhidlbase.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhidlmemory.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhidltransport.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhwbinder.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libion.so,VNDK-SP,
+/system/${LIB}/vndk-sp/liblzma.so,VNDK-SP-Indirect,
+/system/${LIB}/vndk-sp/libunwind.so,VNDK-SP-Indirect,
+/system/${LIB}/vndk-sp/libunwindstack.so,VNDK-SP-Indirect,
+/system/${LIB}/vndk-sp/libutils.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libz.so,VNDK-SP,
+/system/${LIB}/vndk/android.frameworks.displayservice@1.0.so,VNDK,
+/system/${LIB}/vndk/android.frameworks.schedulerservice@1.0.so,VNDK,
+/system/${LIB}/vndk/android.frameworks.sensorservice@1.0.so,VNDK,
+/system/${LIB}/vndk/android.frameworks.vr.composer@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.audio.common@2.0-util.so,VNDK,
+/system/${LIB}/vndk/android.hardware.audio.common@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.audio.effect@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.audio@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.automotive.evs@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.automotive.vehicle@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.bluetooth@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.boot@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.broadcastradio@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.broadcastradio@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.common@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.device@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.device@3.2.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.device@3.3.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.metadata@3.2.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.provider@2.4.so,VNDK,
+/system/${LIB}/vndk/android.hardware.cas.native@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.cas@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.configstore-utils.so,VNDK,
+/system/${LIB}/vndk/android.hardware.configstore@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.contexthub@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.drm@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.dumpstate@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.gatekeeper@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.gnss@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.graphics.composer@2.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.health@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.ir@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.keymaster@3.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.light@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.media.omx@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.media@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.memtrack@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.neuralnetworks@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.nfc@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.oemlock@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.power@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.power@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.radio.deprecated@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.radio@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.radio@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.sensors@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.soundtrigger@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tests.libhwbinder@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tetheroffload.config@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tetheroffload.control@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.thermal@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.thermal@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tv.cec@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tv.input@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.usb@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.usb@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.vibrator@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.vibrator@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.vr@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.weaver@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.wifi.offload@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.wifi.supplicant@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.wifi@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.wifi@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hidl.allocator@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hidl.token@1.0-utils.so,VNDK,
+/system/${LIB}/vndk/android.hidl.token@1.0.so,VNDK,
+/system/${LIB}/vndk/android.system.net.netd@1.0.so,VNDK,
+/system/${LIB}/vndk/android.system.wifi.keystore@1.0.so,VNDK,
+/system/${LIB}/vndk/libadf.so,VNDK,
+/system/${LIB}/vndk/libaudioroute.so,VNDK,
+/system/${LIB}/vndk/libaudioutils.so,VNDK,
+/system/${LIB}/vndk/libbinder.so,VNDK,
+/system/${LIB}/vndk/libcamera_metadata.so,VNDK,
+/system/${LIB}/vndk/libcap.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
+/system/${LIB}/vndk/libcrypto.so,VNDK,
+/system/${LIB}/vndk/libcrypto_utils.so,VNDK,
+/system/${LIB}/vndk/libcurl.so,VNDK,
+/system/${LIB}/vndk/libdiskconfig.so,VNDK,
+/system/${LIB}/vndk/libdumpstateutil.so,VNDK,
+/system/${LIB}/vndk/libevent.so,VNDK,
+/system/${LIB}/vndk/libexif.so,VNDK,
+/system/${LIB}/vndk/libexpat.so,VNDK,
+/system/${LIB}/vndk/libfmq.so,VNDK,
+/system/${LIB}/vndk/libgatekeeper.so,VNDK,
+/system/${LIB}/vndk/libgui.so,VNDK,
+/system/${LIB}/vndk/libhardware_legacy.so,VNDK,
+/system/${LIB}/vndk/libjpeg.so,VNDK,
+/system/${LIB}/vndk/libkeymaster_messages.so,VNDK,
+/system/${LIB}/vndk/libkeymaster_portable.so,VNDK,
+/system/${LIB}/vndk/libkeymaster_staging.so,VNDK,
+/system/${LIB}/vndk/libldacBT_abr.so,VNDK,
+/system/${LIB}/vndk/libldacBT_enc.so,VNDK,
+/system/${LIB}/vndk/liblz4.so,VNDK,
+/system/${LIB}/vndk/libmedia_helper.so,VNDK,
+/system/${LIB}/vndk/libmedia_omx.so,VNDK,
+/system/${LIB}/vndk/libmemtrack.so,VNDK,
+/system/${LIB}/vndk/libnetutils.so,VNDK,
+/system/${LIB}/vndk/libnl.so,VNDK,
+/system/${LIB}/vndk/libopus.so,VNDK,
+/system/${LIB}/vndk/libpagemap.so,VNDK,
+/system/${LIB}/vndk/libpcre2.so,VNDK,
+/system/${LIB}/vndk/libpiex.so,VNDK,
+/system/${LIB}/vndk/libpng.so,VNDK,
+/system/${LIB}/vndk/libpower.so,VNDK,
+/system/${LIB}/vndk/libprocinfo.so,VNDK,
+/system/${LIB}/vndk/libprotobuf-cpp-full.so,VNDK,
+/system/${LIB}/vndk/libprotobuf-cpp-lite.so,VNDK,
+/system/${LIB}/vndk/libradio_metadata.so,VNDK,
+/system/${LIB}/vndk/libsoftkeymasterdevice.so,VNDK,
+/system/${LIB}/vndk/libspeexresampler.so,VNDK,
+/system/${LIB}/vndk/libsqlite.so,VNDK,
+/system/${LIB}/vndk/libssl.so,VNDK,
+/system/${LIB}/vndk/libstagefright_amrnb_common.so,VNDK,
+/system/${LIB}/vndk/libstagefright_enc_common.so,VNDK,
+/system/${LIB}/vndk/libstagefright_flacdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_foundation.so,VNDK,
+/system/${LIB}/vndk/libstagefright_omx.so,VNDK,
+/system/${LIB}/vndk/libstagefright_omx_utils.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_aacdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_aacenc.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_amrdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_amrnbenc.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_amrwbenc.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_avcdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_avcenc.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_flacdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_flacenc.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_g711dec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_gsmdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_hevcdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_mp3dec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_mpeg2dec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_mpeg4dec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_mpeg4enc.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_opusdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_rawdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_vorbisdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_vpxdec.so,VNDK,
+/system/${LIB}/vndk/libstagefright_soft_vpxenc.so,VNDK,
+/system/${LIB}/vndk/libstagefright_xmlparser.so,VNDK,
+/system/${LIB}/vndk/libsuspend.so,VNDK,
+/system/${LIB}/vndk/libsysutils.so,VNDK,
+/system/${LIB}/vndk/libtinyalsa.so,VNDK,
+/system/${LIB}/vndk/libtinyxml2.so,VNDK,
+/system/${LIB}/vndk/libui.so,VNDK,
+/system/${LIB}/vndk/libusbhost.so,VNDK,
+/system/${LIB}/vndk/libvixl-arm.so,VNDK,
+/system/${LIB}/vndk/libvixl-arm64.so,VNDK,
+/system/${LIB}/vndk/libvorbisidec.so,VNDK,
+/system/${LIB}/vndk/libwifi-system-iface.so,VNDK,
+/system/${LIB}/vndk/libxml2.so,VNDK,
+/system/${LIB}/vndk/libyuv.so,VNDK,
+/system/${LIB}/vndk/libziparchive.so,VNDK,
+/system/${LIB}/vndk/tests.vendor@1.0.so,VNDK,
+/system/${LIB}/vndk/tests.vendor@1.1.so,VNDK,
+/vendor/${LIB}/libavservices_minijail_vendor.so,VND-ONLY,Framework module should link libavservices_minijail.so
+/vendor/${LIB}/libcld80211.so,VND-ONLY,
+/vendor/${LIB}/libeffects.so,VND-ONLY,
+/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY,
+/vendor/${LIB}/libminijail_vendor.so,VND-ONLY,Framework module should link libminijail.so
+/vendor/${LIB}/libnbaio_mono.so,VND-ONLY,
+/vendor/${LIB}/libreference-ril.so,VND-ONLY,
+/vendor/${LIB}/libril.so,VND-ONLY,
+/vendor/${LIB}/librilutils.so,VND-ONLY,
+/vendor/${LIB}/libtinycompress.so,VND-ONLY,
+/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,
+/vendor/${LIB}/soundfx/libaudiopreprocessing.so,VND-ONLY,
+/vendor/${LIB}/soundfx/libbundlewrapper.so,VND-ONLY,
+/vendor/${LIB}/soundfx/libdownmix.so,VND-ONLY,
+/vendor/${LIB}/soundfx/libeffectproxy.so,VND-ONLY,
+/vendor/${LIB}/soundfx/libldnhncr.so,VND-ONLY,
+/vendor/${LIB}/soundfx/libreverbwrapper.so,VND-ONLY,
+/vendor/${LIB}/soundfx/libvisualizer.so,VND-ONLY,
diff --git a/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv
new file mode 100644
index 0000000..fd1fb75
--- /dev/null
+++ b/vndk/tools/definition-tool/datasets/eligible-list-o-release.csv
@@ -0,0 +1,509 @@
+Path,Tag,Comments
+/system/${LIB}/android.frameworks.displayservice@1.0.so,VNDK,
+/system/${LIB}/android.frameworks.schedulerservice@1.0.so,VNDK,
+/system/${LIB}/android.frameworks.sensorservice@1.0.so,VNDK,
+/system/${LIB}/android.frameworks.vr.composer@1.0.so,VNDK,
+/system/${LIB}/android.hardware.audio.common@2.0-util.so,VNDK,
+/system/${LIB}/android.hardware.audio.common@2.0.so,VNDK,
+/system/${LIB}/android.hardware.audio.effect@2.0.so,VNDK,
+/system/${LIB}/android.hardware.audio@2.0.so,VNDK,
+/system/${LIB}/android.hardware.automotive.evs@1.0.so,VNDK,
+/system/${LIB}/android.hardware.automotive.vehicle@2.0.so,VNDK,
+/system/${LIB}/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
+/system/${LIB}/android.hardware.bluetooth@1.0.so,VNDK,
+/system/${LIB}/android.hardware.boot@1.0.so,VNDK,
+/system/${LIB}/android.hardware.broadcastradio@1.0.so,VNDK,
+/system/${LIB}/android.hardware.broadcastradio@1.1.so,VNDK,
+/system/${LIB}/android.hardware.camera.common@1.0.so,VNDK,
+/system/${LIB}/android.hardware.camera.device@1.0.so,VNDK,
+/system/${LIB}/android.hardware.camera.device@3.2.so,VNDK,
+/system/${LIB}/android.hardware.camera.metadata@3.2.so,VNDK,
+/system/${LIB}/android.hardware.camera.provider@2.4.so,VNDK,
+/system/${LIB}/android.hardware.configstore-utils.so,VNDK,
+/system/${LIB}/android.hardware.configstore@1.0.so,VNDK,
+/system/${LIB}/android.hardware.contexthub@1.0.so,VNDK,
+/system/${LIB}/android.hardware.drm@1.0.so,VNDK,
+/system/${LIB}/android.hardware.dumpstate@1.0.so,VNDK,
+/system/${LIB}/android.hardware.gatekeeper@1.0.so,VNDK,
+/system/${LIB}/android.hardware.gnss@1.0.so,VNDK,
+/system/${LIB}/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
+/system/${LIB}/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
+/system/${LIB}/android.hardware.graphics.common@1.0.so,VNDK-SP,
+/system/${LIB}/android.hardware.graphics.composer@2.1.so,VNDK,
+/system/${LIB}/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
+/system/${LIB}/android.hardware.health@1.0.so,VNDK,
+/system/${LIB}/android.hardware.ir@1.0.so,VNDK,
+/system/${LIB}/android.hardware.keymaster@3.0.so,VNDK,
+/system/${LIB}/android.hardware.light@2.0.so,VNDK,
+/system/${LIB}/android.hardware.media.omx@1.0.so,VNDK,
+/system/${LIB}/android.hardware.media@1.0.so,VNDK,
+/system/${LIB}/android.hardware.memtrack@1.0.so,VNDK,
+/system/${LIB}/android.hardware.nfc@1.0.so,VNDK,
+/system/${LIB}/android.hardware.power@1.0.so,VNDK,
+/system/${LIB}/android.hardware.radio.deprecated@1.0.so,VNDK,
+/system/${LIB}/android.hardware.radio@1.0.so,VNDK,
+/system/${LIB}/android.hardware.radio@1.1.so,VNDK,
+/system/${LIB}/android.hardware.renderscript@1.0.so,VNDK-SP,
+/system/${LIB}/android.hardware.sensors@1.0.so,VNDK,
+/system/${LIB}/android.hardware.soundtrigger@2.0.so,VNDK,
+/system/${LIB}/android.hardware.tests.libhwbinder@1.0.so,VNDK,
+/system/${LIB}/android.hardware.tetheroffload.config@1.0.so,VNDK,
+/system/${LIB}/android.hardware.tetheroffload.control@1.0.so,VNDK,
+/system/${LIB}/android.hardware.thermal@1.0.so,VNDK,
+/system/${LIB}/android.hardware.tv.cec@1.0.so,VNDK,
+/system/${LIB}/android.hardware.tv.input@1.0.so,VNDK,
+/system/${LIB}/android.hardware.usb@1.0.so,VNDK,
+/system/${LIB}/android.hardware.vibrator@1.0.so,VNDK,
+/system/${LIB}/android.hardware.vr@1.0.so,VNDK,
+/system/${LIB}/android.hardware.wifi.supplicant@1.0.so,VNDK,
+/system/${LIB}/android.hardware.wifi@1.0.so,VNDK,
+/system/${LIB}/android.hidl.allocator@1.0.so,VNDK,
+/system/${LIB}/android.hidl.base@1.0.so,VNDK-SP,
+/system/${LIB}/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/android.hidl.memory@1.0.so,VNDK-SP,
+/system/${LIB}/android.hidl.token@1.0-utils.so,VNDK,
+/system/${LIB}/android.hidl.token@1.0.so,VNDK,
+/system/${LIB}/android.system.wifi.keystore@1.0.so,VNDK,
+/system/${LIB}/drm/libfwdlockengine.so,FWK-ONLY,
+/system/${LIB}/hw/audio.a2dp.default.so,FWK-ONLY,
+/system/${LIB}/hw/bluetooth.default.so,FWK-ONLY,
+/system/${LIB}/hw/keystore.default.so,FWK-ONLY,
+/system/${LIB}/ld-android.so,LL-NDK-Indirect,
+/system/${LIB}/libEGL.so,SP-NDK,
+/system/${LIB}/libETC1.so,FWK-ONLY,
+/system/${LIB}/libFFTEm.so,FWK-ONLY,
+/system/${LIB}/libGLESv1_CM.so,SP-NDK,
+/system/${LIB}/libGLESv2.so,SP-NDK,
+/system/${LIB}/libGLESv3.so,SP-NDK,
+/system/${LIB}/libLLVM.so,FWK-ONLY,
+/system/${LIB}/libOpenMAXAL.so,FWK-ONLY,
+/system/${LIB}/libOpenSLES.so,FWK-ONLY,
+/system/${LIB}/libRS.so,FWK-ONLY,
+/system/${LIB}/libRSCpuRef.so,VNDK-SP,
+/system/${LIB}/libRSDriver.so,VNDK-SP,
+/system/${LIB}/libRS_internal.so,VNDK-SP,
+/system/${LIB}/libRScpp.so,FWK-ONLY,
+/system/${LIB}/libWnnEngDic.so,FWK-ONLY,
+/system/${LIB}/libWnnJpnDic.so,FWK-ONLY,
+/system/${LIB}/libaaudio.so,FWK-ONLY,
+/system/${LIB}/libandroid.so,FWK-ONLY,
+/system/${LIB}/libandroid_net.so,LL-NDK,
+/system/${LIB}/libandroid_runtime.so,FWK-ONLY,
+/system/${LIB}/libandroid_servers.so,FWK-ONLY,
+/system/${LIB}/libandroidfw.so,FWK-ONLY,
+/system/${LIB}/libappfuse.so,FWK-ONLY,
+/system/${LIB}/libart-compiler.so,FWK-ONLY,
+/system/${LIB}/libart-dexlayout.so,FWK-ONLY,
+/system/${LIB}/libart-disassembler.so,FWK-ONLY,
+/system/${LIB}/libart.so,FWK-ONLY,
+/system/${LIB}/libaudioclient.so,FWK-ONLY,
+/system/${LIB}/libaudioeffect_jni.so,FWK-ONLY,
+/system/${LIB}/libaudioflinger.so,FWK-ONLY,
+/system/${LIB}/libaudiohal.so,FWK-ONLY,
+/system/${LIB}/libaudiomanager.so,FWK-ONLY,
+/system/${LIB}/libaudiopolicyenginedefault.so,FWK-ONLY,
+/system/${LIB}/libaudiopolicymanager.so,FWK-ONLY,
+/system/${LIB}/libaudiopolicymanagerdefault.so,FWK-ONLY,
+/system/${LIB}/libaudiopolicyservice.so,FWK-ONLY,
+/system/${LIB}/libaudioprocessing.so,FWK-ONLY,
+/system/${LIB}/libaudioroute.so,VNDK,
+/system/${LIB}/libaudiospdif.so,FWK-ONLY,
+/system/${LIB}/libaudioutils.so,VNDK,
+/system/${LIB}/libavservices_minijail.so,VNDK,"Will be FWK-ONLY in the future.  Vendor module should link libavservices_minijail_vendor.so"
+/system/${LIB}/libbacktrace.so,VNDK-SP-Indirect,
+/system/${LIB}/libbase.so,VNDK-SP,
+/system/${LIB}/libbatteryservice.so,FWK-ONLY,
+/system/${LIB}/libbcc.so,FWK-ONLY,
+/system/${LIB}/libbcinfo.so,VNDK-SP,
+/system/${LIB}/libbinder.so,VNDK,
+/system/${LIB}/libbinderwrapper.so,FWK-ONLY,
+/system/${LIB}/libblas.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/libbluetooth_jni.so,FWK-ONLY,
+/system/${LIB}/libbrillo-binder.so,FWK-ONLY,
+/system/${LIB}/libbrillo-stream.so,FWK-ONLY,
+/system/${LIB}/libbrillo.so,FWK-ONLY,
+/system/${LIB}/libc++.so,VNDK-SP,
+/system/${LIB}/libc.so,LL-NDK,
+/system/${LIB}/libc_malloc_debug.so,LL-NDK-Indirect,
+/system/${LIB}/libcamera2ndk.so,FWK-ONLY,
+/system/${LIB}/libcamera_client.so,FWK-ONLY,
+/system/${LIB}/libcamera_metadata.so,VNDK,
+/system/${LIB}/libcameraservice.so,FWK-ONLY,
+/system/${LIB}/libcap.so,VNDK,
+/system/${LIB}/libchrome.so,FWK-ONLY,
+/system/${LIB}/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
+/system/${LIB}/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
+/system/${LIB}/libcompiler_rt.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/libcrypto.so,VNDK,
+/system/${LIB}/libcrypto_utils.so,VNDK,
+/system/${LIB}/libcups.so,FWK-ONLY,
+/system/${LIB}/libcurl.so,VNDK,
+/system/${LIB}/libcutils.so,VNDK-SP,
+/system/${LIB}/libdebuggerd_client.so,FWK-ONLY,
+/system/${LIB}/libdefcontainer_jni.so,FWK-ONLY,
+/system/${LIB}/libdiskconfig.so,VNDK,
+/system/${LIB}/libdl.so,LL-NDK,
+/system/${LIB}/libdng_sdk.so,FWK-ONLY,
+/system/${LIB}/libdrmframework.so,FWK-ONLY,
+/system/${LIB}/libdrmframework_jni.so,FWK-ONLY,
+/system/${LIB}/libdumpstateaidl.so,FWK-ONLY,
+/system/${LIB}/libdumpstateutil.so,VNDK,
+/system/${LIB}/libevent.so,VNDK,
+/system/${LIB}/libexif.so,VNDK,
+/system/${LIB}/libexpat.so,VNDK,
+/system/${LIB}/libext2_blkid.so,FWK-ONLY,
+/system/${LIB}/libext2_com_err.so,FWK-ONLY,
+/system/${LIB}/libext2_e2p.so,FWK-ONLY,
+/system/${LIB}/libext2_quota.so,FWK-ONLY,
+/system/${LIB}/libext2_uuid.so,FWK-ONLY,
+/system/${LIB}/libext2fs.so,FWK-ONLY,
+/system/${LIB}/libext4_utils.so,FWK-ONLY,
+/system/${LIB}/libf2fs_sparseblock.so,FWK-ONLY,
+/system/${LIB}/libfilterfw.so,FWK-ONLY,
+/system/${LIB}/libfilterpack_imageproc.so,FWK-ONLY,
+/system/${LIB}/libfmq.so,VNDK,
+/system/${LIB}/libframesequence.so,FWK-ONLY,
+/system/${LIB}/libft2.so,FWK-ONLY-RS,
+/system/${LIB}/libgatekeeper.so,VNDK,
+/system/${LIB}/libgiftranscode.so,FWK-ONLY,
+/system/${LIB}/libgui.so,VNDK,
+/system/${LIB}/libhardware.so,VNDK-SP,
+/system/${LIB}/libhardware_legacy.so,VNDK,
+/system/${LIB}/libharfbuzz_ng.so,FWK-ONLY,
+/system/${LIB}/libhidcommand_jni.so,FWK-ONLY,
+/system/${LIB}/libhidl-gen-utils.so,FWK-ONLY,
+/system/${LIB}/libhidlbase.so,VNDK-SP,
+/system/${LIB}/libhidlmemory.so,VNDK-SP,
+/system/${LIB}/libhidltransport.so,VNDK-SP,
+/system/${LIB}/libhwbinder.so,VNDK-SP,
+/system/${LIB}/libhwui.so,FWK-ONLY,
+/system/${LIB}/libicui18n.so,VNDK,Will be FWK-ONLY in the future
+/system/${LIB}/libicuuc.so,VNDK,Will be FWK-ONLY in the future
+/system/${LIB}/libimg_utils.so,FWK-ONLY,
+/system/${LIB}/libincident.so,FWK-ONLY,
+/system/${LIB}/libinput.so,FWK-ONLY,
+/system/${LIB}/libinputflinger.so,FWK-ONLY,
+/system/${LIB}/libinputservice.so,FWK-ONLY,
+/system/${LIB}/libion.so,VNDK-SP,
+/system/${LIB}/libiprouteutil.so,FWK-ONLY,
+/system/${LIB}/libjavacore.so,FWK-ONLY,
+/system/${LIB}/libjavacrypto.so,FWK-ONLY,
+/system/${LIB}/libjni_eglfence.so,FWK-ONLY,
+/system/${LIB}/libjni_filtershow_filters.so,FWK-ONLY,
+/system/${LIB}/libjni_jpegstream.so,FWK-ONLY,
+/system/${LIB}/libjni_jpegutil.so,FWK-ONLY,
+/system/${LIB}/libjni_latinime.so,FWK-ONLY,
+/system/${LIB}/libjni_pacprocessor.so,FWK-ONLY,
+/system/${LIB}/libjni_tinyplanet.so,FWK-ONLY,
+/system/${LIB}/libjnigraphics.so,FWK-ONLY,
+/system/${LIB}/libjpeg.so,VNDK,
+/system/${LIB}/libkeymaster1.so,VNDK,
+/system/${LIB}/libkeymaster_messages.so,VNDK,
+/system/${LIB}/libkeystore-engine.so,FWK-ONLY,
+/system/${LIB}/libkeystore_binder.so,FWK-ONLY,
+/system/${LIB}/libldacBT_abr.so,VNDK,
+/system/${LIB}/libldacBT_enc.so,VNDK,
+/system/${LIB}/liblog.so,LL-NDK,
+/system/${LIB}/liblogcat.so,FWK-ONLY,
+/system/${LIB}/liblogwrap.so,FWK-ONLY,
+/system/${LIB}/liblz4.so,VNDK,
+/system/${LIB}/liblzma.so,VNDK-SP-Indirect,
+/system/${LIB}/libm.so,LL-NDK,
+/system/${LIB}/libmdnssd.so,FWK-ONLY,
+/system/${LIB}/libmedia.so,FWK-ONLY,
+/system/${LIB}/libmedia_helper.so,VNDK,
+/system/${LIB}/libmedia_jni.so,FWK-ONLY,
+/system/${LIB}/libmedia_omx.so,VNDK,
+/system/${LIB}/libmediadrm.so,FWK-ONLY,
+/system/${LIB}/libmediaextractorservice.so,FWK-ONLY,
+/system/${LIB}/libmedialogservice.so,FWK-ONLY,
+/system/${LIB}/libmediametrics.so,FWK-ONLY,
+/system/${LIB}/libmediandk.so,FWK-ONLY-RS,
+/system/${LIB}/libmediautils.so,FWK-ONLY,
+/system/${LIB}/libmemtrack.so,VNDK,
+/system/${LIB}/libmemunreachable.so,FWK-ONLY,
+/system/${LIB}/libmetricslogger.so,FWK-ONLY,
+/system/${LIB}/libmidi.so,FWK-ONLY,
+/system/${LIB}/libminijail.so,VNDK,"Will be FWK-ONLY in the future.  Vendor module should link libminijail_vendor.so"
+/system/${LIB}/libminikin.so,FWK-ONLY,
+/system/${LIB}/libmtp.so,FWK-ONLY,
+/system/${LIB}/libnativebridge.so,FWK-ONLY,
+/system/${LIB}/libnativehelper.so,FWK-ONLY,
+/system/${LIB}/libnativeloader.so,FWK-ONLY,
+/system/${LIB}/libnativewindow.so,SP-NDK,
+/system/${LIB}/libnbaio.so,VNDK,"Vendor modules should use libnbaio_mono.so (with less APIs) in the future"
+/system/${LIB}/libnetd_client.so,LL-NDK-Indirect,
+/system/${LIB}/libnetdaidl.so,FWK-ONLY,
+/system/${LIB}/libnetlink.so,FWK-ONLY,
+/system/${LIB}/libnetutils.so,VNDK,
+/system/${LIB}/libnl.so,VNDK,
+/system/${LIB}/libopenjdk.so,FWK-ONLY,
+/system/${LIB}/libopenjdkjvm.so,FWK-ONLY,
+/system/${LIB}/libopenjdkjvmti.so,FWK-ONLY,
+/system/${LIB}/libopus.so,FWK-ONLY,
+/system/${LIB}/libpac.so,FWK-ONLY,
+/system/${LIB}/libpackagelistparser.so,FWK-ONLY,
+/system/${LIB}/libpagemap.so,VNDK,
+/system/${LIB}/libpcap.so,FWK-ONLY,
+/system/${LIB}/libpcre2.so,VNDK,
+/system/${LIB}/libpcrecpp.so,FWK-ONLY,
+/system/${LIB}/libpdfium.so,FWK-ONLY,
+/system/${LIB}/libpiex.so,VNDK,
+/system/${LIB}/libpixelflinger.so,FWK-ONLY,
+/system/${LIB}/libpng.so,VNDK,
+/system/${LIB}/libpower.so,VNDK,
+/system/${LIB}/libpowermanager.so,FWK-ONLY,
+/system/${LIB}/libprintspooler_jni.so,FWK-ONLY,
+/system/${LIB}/libprocessgroup.so,FWK-ONLY,
+/system/${LIB}/libprocinfo.so,VNDK,
+/system/${LIB}/libprotobuf-cpp-full.so,VNDK,
+/system/${LIB}/libprotobuf-cpp-lite.so,VNDK,
+/system/${LIB}/libradio.so,FWK-ONLY,
+/system/${LIB}/libradio_metadata.so,VNDK,
+/system/${LIB}/libradioservice.so,FWK-ONLY,
+/system/${LIB}/librs_jni.so,FWK-ONLY,
+/system/${LIB}/librtp_jni.so,FWK-ONLY,
+/system/${LIB}/libschedulerservicehidl.so,FWK-ONLY,
+/system/${LIB}/libselinux.so,FWK-ONLY,
+/system/${LIB}/libsensor.so,FWK-ONLY,
+/system/${LIB}/libsensorservice.so,FWK-ONLY,
+/system/${LIB}/libsensorservicehidl.so,FWK-ONLY,
+/system/${LIB}/libservices.so,FWK-ONLY,
+/system/${LIB}/libserviceutility.so,FWK-ONLY,
+/system/${LIB}/libsigchain.so,FWK-ONLY,
+/system/${LIB}/libskia.so,FWK-ONLY,
+/system/${LIB}/libsoftkeymaster.so,FWK-ONLY,
+/system/${LIB}/libsoftkeymasterdevice.so,VNDK,
+/system/${LIB}/libsonic.so,FWK-ONLY,
+/system/${LIB}/libsonivox.so,FWK-ONLY,
+/system/${LIB}/libsoundpool.so,FWK-ONLY,
+/system/${LIB}/libsoundtrigger.so,FWK-ONLY,
+/system/${LIB}/libsoundtriggerservice.so,FWK-ONLY,
+/system/${LIB}/libsparse.so,FWK-ONLY,
+/system/${LIB}/libspeexresampler.so,VNDK,
+/system/${LIB}/libsqlite.so,VNDK,
+/system/${LIB}/libssl.so,VNDK,
+/system/${LIB}/libstagefright.so,FWK-ONLY,
+/system/${LIB}/libstagefright_amrnb_common.so,FWK-ONLY,
+/system/${LIB}/libstagefright_enc_common.so,FWK-ONLY,
+/system/${LIB}/libstagefright_foundation.so,VNDK,
+/system/${LIB}/libstagefright_http_support.so,FWK-ONLY,
+/system/${LIB}/libstagefright_omx.so,VNDK,
+/system/${LIB}/libstagefright_soft_aacdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_aacenc.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_amrdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_amrnbenc.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_amrwbenc.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_avcdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_avcenc.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_flacenc.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_g711dec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_gsmdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_hevcdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_mp3dec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_mpeg2dec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_mpeg4dec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_mpeg4enc.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_opusdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_rawdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_vorbisdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_vpxdec.so,FWK-ONLY,
+/system/${LIB}/libstagefright_soft_vpxenc.so,FWK-ONLY,
+/system/${LIB}/libstagefright_xmlparser@1.0.so,FWK-ONLY,
+/system/${LIB}/libstdc++.so,LL-NDK,
+/system/${LIB}/libsurfaceflinger.so,FWK-ONLY,
+/system/${LIB}/libsurfaceflinger_ddmconnection.so,FWK-ONLY,
+/system/${LIB}/libsuspend.so,VNDK,
+/system/${LIB}/libsync.so,SP-NDK,
+/system/${LIB}/libsysutils.so,VNDK,
+/system/${LIB}/libtextclassifier.so,FWK-ONLY,
+/system/${LIB}/libtinyalsa.so,VNDK,
+/system/${LIB}/libtinyxml2.so,VNDK,
+/system/${LIB}/libui.so,VNDK,
+/system/${LIB}/libunwind.so,VNDK-SP-Indirect,
+/system/${LIB}/libunwindstack.so,VNDK-SP-Indirect,
+/system/${LIB}/libusbhost.so,VNDK,
+/system/${LIB}/libutils.so,VNDK-SP,
+/system/${LIB}/libvintf.so,FWK-ONLY,
+/system/${LIB}/libvixl-arm.so,VNDK,
+/system/${LIB}/libvixl-arm64.so,VNDK,
+/system/${LIB}/libvndksupport.so,LL-NDK,
+/system/${LIB}/libvorbisidec.so,FWK-ONLY,
+/system/${LIB}/libvulkan.so,SP-NDK,
+/system/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,This will be moved to vendor partition
+/system/${LIB}/libwebviewchromium_loader.so,FWK-ONLY,
+/system/${LIB}/libwebviewchromium_plat_support.so,FWK-ONLY,
+/system/${LIB}/libwfds.so,FWK-ONLY,
+/system/${LIB}/libwifi-service.so,FWK-ONLY,
+/system/${LIB}/libwifi-system.so,FWK-ONLY,
+/system/${LIB}/libwifikeystorehal.so,FWK-ONLY,
+/system/${LIB}/libwilhelm.so,FWK-ONLY,
+/system/${LIB}/libwnndict.so,FWK-ONLY,
+/system/${LIB}/libxml2.so,VNDK,
+/system/${LIB}/libyuv.so,VNDK,
+/system/${LIB}/libz.so,LL-NDK,
+/system/${LIB}/libziparchive.so,VNDK,
+/system/${LIB}/vndk-sp/android.hardware.graphics.allocator@2.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hardware.graphics.common@1.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hardware.graphics.mapper@2.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hardware.renderscript@1.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hidl.base@1.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/android.hidl.memory@1.0-impl.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/vndk-sp/android.hidl.memory@1.0.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libRSCpuRef.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libRSDriver.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libRS_internal.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libbacktrace.so,VNDK-SP-Indirect,
+/system/${LIB}/vndk-sp/libbase.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libbcinfo.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libblas.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/vndk-sp/libc++.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libcompiler_rt.so,VNDK-SP-Indirect-Private,
+/system/${LIB}/vndk-sp/libcutils.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhardware.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhidlbase.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhidlmemory.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhidltransport.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libhwbinder.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libion.so,VNDK-SP,
+/system/${LIB}/vndk-sp/liblzma.so,VNDK-SP-Indirect,
+/system/${LIB}/vndk-sp/libunwind.so,VNDK-SP-Indirect,
+/system/${LIB}/vndk-sp/libunwindstack.so,VNDK-SP-Indirect,
+/system/${LIB}/vndk-sp/libutils.so,VNDK-SP,
+/system/${LIB}/vndk-sp/libz.so,VNDK-SP,
+/system/${LIB}/vndk/android.frameworks.displayservice@1.0.so,VNDK,
+/system/${LIB}/vndk/android.frameworks.schedulerservice@1.0.so,VNDK,
+/system/${LIB}/vndk/android.frameworks.sensorservice@1.0.so,VNDK,
+/system/${LIB}/vndk/android.frameworks.vr.composer@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.audio.common@2.0-util.so,VNDK,
+/system/${LIB}/vndk/android.hardware.audio.common@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.audio.effect@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.audio@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.automotive.evs@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.automotive.vehicle@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.biometrics.fingerprint@2.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.bluetooth@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.boot@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.broadcastradio@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.broadcastradio@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.common@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.device@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.device@3.2.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.metadata@3.2.so,VNDK,
+/system/${LIB}/vndk/android.hardware.camera.provider@2.4.so,VNDK,
+/system/${LIB}/vndk/android.hardware.configstore-utils.so,VNDK,
+/system/${LIB}/vndk/android.hardware.configstore@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.contexthub@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.drm@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.dumpstate@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.gatekeeper@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.gnss@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.graphics.bufferqueue@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.graphics.composer@2.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.health@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.ir@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.keymaster@3.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.light@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.media.omx@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.media@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.memtrack@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.nfc@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.power@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.radio.deprecated@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.radio@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.radio@1.1.so,VNDK,
+/system/${LIB}/vndk/android.hardware.sensors@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.soundtrigger@2.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tests.libhwbinder@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tetheroffload.config@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tetheroffload.control@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.thermal@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tv.cec@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.tv.input@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.usb@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.vibrator@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.vr@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.wifi.supplicant@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hardware.wifi@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hidl.allocator@1.0.so,VNDK,
+/system/${LIB}/vndk/android.hidl.token@1.0-utils.so,VNDK,
+/system/${LIB}/vndk/android.hidl.token@1.0.so,VNDK,
+/system/${LIB}/vndk/android.system.wifi.keystore@1.0.so,VNDK,
+/system/${LIB}/vndk/libaudioroute.so,VNDK,
+/system/${LIB}/vndk/libaudioutils.so,VNDK,
+/system/${LIB}/vndk/libavservices_minijail.so,VNDK,"Will be FWK-ONLY in the future.  Vendor module should link libavservices_minijail_vendor.so"
+/system/${LIB}/vndk/libbinder.so,VNDK,
+/system/${LIB}/vndk/libcamera_metadata.so,VNDK,
+/system/${LIB}/vndk/libcap.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-aarch64-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-arm-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-i686-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-mips-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-mips64-android.so,VNDK,
+/system/${LIB}/vndk/libclang_rt.ubsan_standalone-x86_64-android.so,VNDK,
+/system/${LIB}/vndk/libcrypto.so,VNDK,
+/system/${LIB}/vndk/libcrypto_utils.so,VNDK,
+/system/${LIB}/vndk/libcurl.so,VNDK,
+/system/${LIB}/vndk/libdiskconfig.so,VNDK,
+/system/${LIB}/vndk/libdumpstateutil.so,VNDK,
+/system/${LIB}/vndk/libevent.so,VNDK,
+/system/${LIB}/vndk/libexif.so,VNDK,
+/system/${LIB}/vndk/libexpat.so,VNDK,
+/system/${LIB}/vndk/libfmq.so,VNDK,
+/system/${LIB}/vndk/libgatekeeper.so,VNDK,
+/system/${LIB}/vndk/libgui.so,VNDK,
+/system/${LIB}/vndk/libhardware_legacy.so,VNDK,
+/system/${LIB}/vndk/libicui18n.so,VNDK,Will be FWK-ONLY in the future
+/system/${LIB}/vndk/libicuuc.so,VNDK,Will be FWK-ONLY in the future
+/system/${LIB}/vndk/libjpeg.so,VNDK,
+/system/${LIB}/vndk/libkeymaster1.so,VNDK,
+/system/${LIB}/vndk/libkeymaster_messages.so,VNDK,
+/system/${LIB}/vndk/libldacBT_abr.so,VNDK,
+/system/${LIB}/vndk/libldacBT_enc.so,VNDK,
+/system/${LIB}/vndk/liblz4.so,VNDK,
+/system/${LIB}/vndk/libmedia_helper.so,VNDK,
+/system/${LIB}/vndk/libmedia_omx.so,VNDK,
+/system/${LIB}/vndk/libmemtrack.so,VNDK,
+/system/${LIB}/vndk/libminijail.so,VNDK,"Will be FWK-ONLY in the future.  Vendor module should link libminijail_vendor.so"
+/system/${LIB}/vndk/libnbaio.so,VNDK,"Vendor modules should use libnbaio_mono.so (with less APIs) in the future"
+/system/${LIB}/vndk/libnetutils.so,VNDK,
+/system/${LIB}/vndk/libnl.so,VNDK,
+/system/${LIB}/vndk/libpagemap.so,VNDK,
+/system/${LIB}/vndk/libpcre2.so,VNDK,
+/system/${LIB}/vndk/libpiex.so,VNDK,
+/system/${LIB}/vndk/libpng.so,VNDK,
+/system/${LIB}/vndk/libpower.so,VNDK,
+/system/${LIB}/vndk/libprocinfo.so,VNDK,
+/system/${LIB}/vndk/libprotobuf-cpp-full.so,VNDK,
+/system/${LIB}/vndk/libprotobuf-cpp-lite.so,VNDK,
+/system/${LIB}/vndk/libradio_metadata.so,VNDK,
+/system/${LIB}/vndk/libsoftkeymasterdevice.so,VNDK,
+/system/${LIB}/vndk/libspeexresampler.so,VNDK,
+/system/${LIB}/vndk/libsqlite.so,VNDK,
+/system/${LIB}/vndk/libssl.so,VNDK,
+/system/${LIB}/vndk/libstagefright_foundation.so,VNDK,
+/system/${LIB}/vndk/libstagefright_omx.so,VNDK,
+/system/${LIB}/vndk/libsuspend.so,VNDK,
+/system/${LIB}/vndk/libsysutils.so,VNDK,
+/system/${LIB}/vndk/libtinyalsa.so,VNDK,
+/system/${LIB}/vndk/libtinyxml2.so,VNDK,
+/system/${LIB}/vndk/libui.so,VNDK,
+/system/${LIB}/vndk/libusbhost.so,VNDK,
+/system/${LIB}/vndk/libvixl-arm.so,VNDK,
+/system/${LIB}/vndk/libvixl-arm64.so,VNDK,
+/system/${LIB}/vndk/libxml2.so,VNDK,
+/system/${LIB}/vndk/libyuv.so,VNDK,
+/system/${LIB}/vndk/libziparchive.so,VNDK,
+/vendor/${LIB}/libavservices_minijail_vendor.so,VND-ONLY,Framework module should link libavservices_minijail.so
+/vendor/${LIB}/libcld80211.so,VND-ONLY,
+/vendor/${LIB}/libhwc2on1adapter.so,VND-ONLY,
+/vendor/${LIB}/libminijail_vendor.so,VND-ONLY,Framework module should link libminijail.so
+/vendor/${LIB}/libreference-ril.so,VND-ONLY,
+/vendor/${LIB}/libril.so,VND-ONLY,
+/vendor/${LIB}/librilutils.so,VND-ONLY,
+/vendor/${LIB}/libtinycompress.so,VND-ONLY,
+/vendor/${LIB}/libwebrtc_audio_preprocessing.so,VND-ONLY,