diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index f93299c..b42d29b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -457,12 +457,19 @@
     filesBuilder.add(zipAlignedApk);
     NestedSet<Artifact> filesToBuild = filesBuilder.build();
 
+    Iterable<Artifact> dataDeps = ImmutableList.of();
+    if (ruleContext.getAttribute("data") != null
+        && ruleContext.getAttributeMode("data") == Mode.DATA) {
+      dataDeps = ruleContext.getPrerequisiteArtifacts("data", Mode.DATA).list();
+    }
+
     Artifact deployInfo = ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.DEPLOY_INFO);
     AndroidDeployInfoAction.createDeployInfoAction(ruleContext,
         deployInfo,
         applicationManifest.getManifest(),
         additionalMergedManifests,
-        Iterables.concat(ImmutableList.of(zipAlignedApk), apksUnderTest));
+        Iterables.concat(ImmutableList.of(zipAlignedApk), apksUnderTest),
+        dataDeps);
 
     NestedSet<Artifact> coverageMetadata = (androidCommon.getInstrumentedJar() != null)
         ? NestedSetBuilder.create(Order.STABLE_ORDER, androidCommon.getInstrumentedJar())
@@ -536,7 +543,8 @@
         incrementalDeployInfo,
         applicationManifest.getManifest(),
         additionalMergedManifests,
-        ImmutableList.<Artifact>of());
+        ImmutableList.<Artifact>of(),
+        dataDeps);
 
     NestedSet<Artifact> fullInstallOutputGroup = NestedSetBuilder.<Artifact>stableOrder()
         .add(fullDeployMarker)
@@ -634,7 +642,8 @@
         splitDeployInfo,
         applicationManifest.getManifest(),
         additionalMergedManifests,
-        ImmutableList.<Artifact>of());
+        ImmutableList.<Artifact>of(),
+        dataDeps);
 
     NestedSet<Artifact> splitInstallOutputGroup = NestedSetBuilder.<Artifact>stableOrder()
         .addTransitive(allSplitApks)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
index cae2cec..1f38303 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
@@ -44,12 +44,14 @@
   private static Iterable<Artifact> makeInputs(
       Artifact mergedManifest,
       Iterable<Artifact> additionalMergedManifests,
-      Iterable<Artifact> apksToDeploy) {
+      Iterable<Artifact> apksToDeploy,
+      Iterable<Artifact> dataDeps) {
 
     return ImmutableList.<Artifact>builder()
         .add(mergedManifest)
         .addAll(additionalMergedManifests)
         .addAll(apksToDeploy)
+        .addAll(dataDeps)
         .build();
   }
 
@@ -61,8 +63,9 @@
       Artifact outputFile,
       Artifact mergedManifest,
       Iterable<Artifact> additionalMergedManifests,
-      Iterable<Artifact> apksToDeploy) {
-    super(owner, makeInputs(mergedManifest, additionalMergedManifests, apksToDeploy),
+      Iterable<Artifact> apksToDeploy,
+      Iterable<Artifact> dataDeps) {
+    super(owner, makeInputs(mergedManifest, additionalMergedManifests, apksToDeploy, dataDeps),
         outputFile, false);
     AndroidDeployInfoOuterClass.AndroidDeployInfo.Builder builder =
         AndroidDeployInfoOuterClass.AndroidDeployInfo.newBuilder();
@@ -73,6 +76,9 @@
     for (Artifact apk : apksToDeploy) {
       builder.addApksToDeploy(makeArtifactProto(apk));
     }
+    for (Artifact dataDep : dataDeps) {
+      builder.addDataToDeploy(makeArtifactProto(dataDep));
+    }
     this.byteString = builder.build().toByteString();
   }
 
@@ -81,9 +87,10 @@
       Artifact deployInfo,
       Artifact mergedManifest,
       Iterable<Artifact> additionalMergedManifests,
-      Iterable<Artifact> apksToDeploy) {
+      Iterable<Artifact> apksToDeploy,
+      Iterable<Artifact> dataDeps) {
     Action action = new AndroidDeployInfoAction(ruleContext.getActionOwner(),
-        deployInfo, mergedManifest, additionalMergedManifests, apksToDeploy);
+        deployInfo, mergedManifest, additionalMergedManifests, apksToDeploy, dataDeps);
     ruleContext.registerAction(action);
   }
 
diff --git a/src/main/protobuf/android_deploy_info.proto b/src/main/protobuf/android_deploy_info.proto
index c93c9dc..30c7328 100644
--- a/src/main/protobuf/android_deploy_info.proto
+++ b/src/main/protobuf/android_deploy_info.proto
@@ -33,4 +33,7 @@
   // If the build supports an external deploy, this will have the APKs.
   // mobile-install does its own deployment, so this list will be empty
   repeated Artifact apks_to_deploy = 3;
+
+  // Any data files to deploy
+  repeated Artifact data_to_deploy = 4;
 }
