diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy
index 104dba1..63fb064 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy
+++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy
@@ -24,7 +24,6 @@
 import com.android.build.gradle.api.TestVariant
 import com.android.build.gradle.internal.VariantManager
 import com.android.build.gradle.internal.variant.BaseVariantData
-import com.android.builder.dependency.DependencyContainer
 import com.android.builder.dependency.LibraryDependency
 import com.android.builder.model.SourceProvider
 import org.gradle.api.file.ConfigurableFileTree
@@ -180,7 +179,13 @@
     if (libraries == null) return jarToLibraryArtifactMap
 
     for (lib in libraries) {
-      jarToLibraryArtifactMap[lib.jarFile] = lib.bundle
+      if (lib.class.name == "com.android.builder.dependency.level2.AndroidDependency") {
+        // android tools >= 2.3
+        jarToLibraryArtifactMap[lib.jarFile] = lib.artifactFile
+      } else {
+        // android tools <= 2.2
+        jarToLibraryArtifactMap[lib.jarFile] = lib.bundle
+      }
 
       // local dependencies are detected as changed by gradle, because they are seem to be
       // rewritten every time when bundle changes
@@ -201,18 +206,22 @@
   }
 
   @Nullable
-  private static Iterable<LibraryDependency> getVariantLibraryDependencies(BaseVariantData variantData) {
+  private static Iterable<Object> getVariantLibraryDependencies(BaseVariantData variantData) {
     def variantDependency = variantData.variantDependency
-    if (variantDependency instanceof DependencyContainer) {
+
+    if (variantDependency.metaClass.getMetaMethod("getAndroidDependencies") != null) {
       // android tools < 2.2
-      return variantDependency.getAndroidDependencies()
+      return variantDependency.getAndroidDependencies() as Iterable<Object>
     }
 
-    def variantDependencyMeta = variantData.variantDependency.getMetaClass()
-    def getCompileDependencies = variantDependencyMeta.getMetaMethod("getCompileDependencies")
-    if (getCompileDependencies != null && getCompileDependencies.returnType.metaClass == DependencyContainer.metaClass) {
-      // android tools 2.2
-      return variantDependency.getCompileDependencies().getAndroidDependencies()
+    def getCompileDependencies = variantDependency.metaClass.getMetaMethod("getCompileDependencies")
+    if (getCompileDependencies != null) {
+      def compileDependencies = variantDependency.getCompileDependencies()
+      if (compileDependencies.metaClass.getMetaMethod("getDirectAndroidDependencies") != null) {
+        return compileDependencies.getDirectAndroidDependencies() // android >= 2.3
+      } else if (compileDependencies.metaClass.getMetaMethod("getAndroidDependencies")) {
+        return compileDependencies.getAndroidDependencies() // android 2.2
+      }
     }
 
     return null
