Merge cherrypicks of [2454758, 2454859, 2454837, 2454965, 2454984, 2455001, 2454760, 2454860, 2454838, 2454899, 2454970, 2455005, 2455027, 2454973, 2455006, 2455061, 2455007, 2454914, 2454987, 2454974] into oc-release

Change-Id: Ice89728eb699346460b75e84c625ff0f22acd27d
diff --git a/apps/SdkSetup/Android.mk b/apps/SdkSetup/Android.mk
index c8b11f6..16a6e94 100644
--- a/apps/SdkSetup/Android.mk
+++ b/apps/SdkSetup/Android.mk
@@ -10,4 +10,7 @@
 
 LOCAL_PROGUARD_ENABLED := disabled
 
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    gsf-client
+
 include $(BUILD_PACKAGE)
diff --git a/apps/SdkSetup/AndroidManifest.xml b/apps/SdkSetup/AndroidManifest.xml
index 8f72684..4ead2d6 100644
--- a/apps/SdkSetup/AndroidManifest.xml
+++ b/apps/SdkSetup/AndroidManifest.xml
@@ -18,6 +18,7 @@
         package="com.android.sdksetup">
 
     <!-- For miscellaneous settings -->
+    <uses-permission android:name="com.google.android.providers.settings.permission.WRITE_GSETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
 
diff --git a/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java b/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
index 505a353..101b3f6 100644
--- a/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
+++ b/apps/SdkSetup/src/com/android/sdksetup/DefaultActivity.java
@@ -25,7 +25,9 @@
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.os.SystemProperties;
 import android.provider.Settings;
+import com.google.android.gsf.UseLocationForServices;
 
 /**
  * Entry point for SDK SetupWizard.
@@ -46,6 +48,10 @@
         // Not needed since this SDK will contain the Settings app.
         Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
                 LocationManager.GPS_PROVIDER);
+        // Allow google apps to have access to (emulated) location services in emulator
+        if (SystemProperties.getBoolean("ro.kernel.qemu", false)) {
+            UseLocationForServices.forceSetUseLocationForServices(this, true);
+        }
 
         // enable install from non market
         Settings.Global.putInt(getContentResolver(), Settings.Global.INSTALL_NON_MARKET_APPS, 1);
diff --git a/build/sdk-android-arm64-v8a.atree b/build/sdk-android-arm64-v8a.atree
index 5151680..9c0e0ee 100644
--- a/build/sdk-android-arm64-v8a.atree
+++ b/build/sdk-android-arm64-v8a.atree
@@ -16,6 +16,7 @@
 
 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
+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_arm64-v8a_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
diff --git a/build/sdk-android-armeabi-v7a.atree b/build/sdk-android-armeabi-v7a.atree
index a693138..26352e4 100644
--- a/build/sdk-android-armeabi-v7a.atree
+++ b/build/sdk-android-armeabi-v7a.atree
@@ -17,6 +17,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
+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_armeabi-v7a_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
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/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