Merge "Don't use layoutlib preview versions unless building with preview platform. DO NOT MERGE" into studio-1.2-release
diff --git a/android/src/com/android/tools/idea/configurations/ConfigurationManager.java b/android/src/com/android/tools/idea/configurations/ConfigurationManager.java
index e63c7cb..b9884a3 100755
--- a/android/src/com/android/tools/idea/configurations/ConfigurationManager.java
+++ b/android/src/com/android/tools/idea/configurations/ConfigurationManager.java
@@ -18,6 +18,7 @@
 import com.android.annotations.VisibleForTesting;
 import com.android.ide.common.resources.configuration.FolderConfiguration;
 import com.android.ide.common.resources.configuration.LocaleQualifier;
+import com.android.sdklib.AndroidVersion;
 import com.android.sdklib.IAndroidTarget;
 import com.android.sdklib.devices.Device;
 import com.android.sdklib.devices.DeviceManager;
@@ -273,6 +274,13 @@
     for (int i = targetList.length - 1; i >= 0; i--) {
       IAndroidTarget target = targetList[i];
       if (isLayoutLibTarget(target)) {
+        if (target.getVersion().isPreview()) {
+          // Only pick this target if the project is also compiled with the same target
+          AndroidVersion buildSdkVersion = AndroidModuleInfo.getBuildSdkVersion(myModule);
+          if (buildSdkVersion != null && !buildSdkVersion.isPreview()) {
+            continue;
+          }
+        }
         return target;
       }
     }
@@ -512,7 +520,15 @@
     IAndroidTarget[] targetList = getTargets();
     for (int i = targetList.length - 1; i >= 0; i--) {
       target = targetList[i];
-      if (isLayoutLibTarget(target) && target.getVersion().getApiLevel() >= min) {
+      if (isLayoutLibTarget(target) && target.getVersion().getFeatureLevel() >= min) {
+        if (target.getVersion().isPreview()) {
+          // Only pick this target if the project is also compiled with the same target
+          AndroidVersion buildSdkVersion = AndroidModuleInfo.getBuildSdkVersion(myModule);
+          if (buildSdkVersion != null && !buildSdkVersion.isPreview()) {
+            continue;
+          }
+        }
+
         return target;
       }
     }