diff --git a/src/com/facebook/buck/android/AndroidManifest.java b/src/com/facebook/buck/android/AndroidManifest.java
index ed531f3..fb7270d 100644
--- a/src/com/facebook/buck/android/AndroidManifest.java
+++ b/src/com/facebook/buck/android/AndroidManifest.java
@@ -27,12 +27,15 @@
 import com.facebook.buck.rules.Buildable;
 import com.facebook.buck.rules.BuildableContext;
 import com.facebook.buck.rules.DependencyGraph;
+import com.facebook.buck.rules.SourcePath;
+import com.facebook.buck.rules.SourcePaths;
 import com.facebook.buck.step.Step;
 import com.facebook.buck.util.BuckConstant;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 
 import java.io.IOException;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -64,16 +67,16 @@
 public class AndroidManifest extends AbstractBuildable {
 
   private final BuildTarget buildTarget;
-  private final String skeletonFile;
+  private final SourcePath skeletonFile;
 
-  protected AndroidManifest(BuildTarget buildTarget, String skeletonFile) {
+  protected AndroidManifest(BuildTarget buildTarget, SourcePath skeletonFile) {
     this.buildTarget = Preconditions.checkNotNull(buildTarget);
     this.skeletonFile = Preconditions.checkNotNull(skeletonFile);
   }
 
   @Override
-  public List<String> getInputsToCompareToOutput() {
-    return ImmutableList.of(skeletonFile);
+  public Iterable<String> getInputsToCompareToOutput() {
+    return SourcePaths.filterInputsToCompareToOutput(Collections.singleton(skeletonFile));
   }
 
   public BuildTarget getBuildTarget() {
@@ -93,7 +96,7 @@
 
     ImmutableList.Builder<Step> commands = ImmutableList.builder();
     commands.add(new GenerateManifestStep(
-        skeletonFile,
+        skeletonFile.resolve(context).toString(),
         transitiveDependencies.manifestFiles,
         getPathToOutputFile()));
 
@@ -125,7 +128,7 @@
 
   public static class Builder extends AbstractBuildable.Builder {
 
-    protected String skeletonFile;
+    protected SourcePath skeletonFile;
 
     private Builder(AbstractBuildRuleBuilderParams params) {
       super(params);
@@ -142,7 +145,7 @@
       return BuildRuleType.ANDROID_MANIFEST;
     }
 
-    public Builder setSkeletonFile(String skeletonFile) {
+    public Builder setSkeletonFile(SourcePath skeletonFile) {
       this.skeletonFile = skeletonFile;
       return this;
     }
diff --git a/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java b/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
index 071f30e..c7fa58f 100644
--- a/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
@@ -15,9 +15,10 @@
  */
 package com.facebook.buck.android;
 
+import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.facebook.buck.rules.AbstractBuildRuleFactory;
 import com.facebook.buck.rules.BuildRuleFactoryParams;
-import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
+import com.facebook.buck.rules.SourcePath;
 
 public final class AndroidManifestBuildRuleFactory extends AbstractBuildRuleFactory<AndroidManifest.Builder> {
 
@@ -30,7 +31,7 @@
   protected void amendBuilder(AndroidManifest.Builder builder, BuildRuleFactoryParams params) {
     // skeleton file
     String skeletonFile = params.getRequiredStringAttribute("skeleton");
-    String skeletonPath = params.resolveFilePathRelativeToBuildFileDirectory(skeletonFile);
+    SourcePath skeletonPath = params.asSourcePath(skeletonFile, builder);
     builder.setSkeletonFile(skeletonPath);
   }
 }
diff --git a/test/com/facebook/buck/android/AndroidManifestTest.java b/test/com/facebook/buck/android/AndroidManifestTest.java
index ab6bff7..9a6b74f 100644
--- a/test/com/facebook/buck/android/AndroidManifestTest.java
+++ b/test/com/facebook/buck/android/AndroidManifestTest.java
@@ -31,6 +31,7 @@
 import com.facebook.buck.rules.FakeAbstractBuildRuleBuilderParams;
 import com.facebook.buck.rules.FakeBuildRule;
 import com.facebook.buck.rules.FakeBuildableContext;
+import com.facebook.buck.rules.FileSourcePath;
 import com.facebook.buck.step.Step;
 import com.facebook.buck.testutil.MoreAsserts;
 import com.facebook.buck.util.BuckConstant;
@@ -62,7 +63,7 @@
 
     assertEquals(
         ImmutableList.of("java/com/example/AndroidManifestSkeleton.xml"),
-        androidManifestRule.getInputsToCompareToOutput());
+        ImmutableList.copyOf(androidManifestRule.getInputsToCompareToOutput()));
     assertEquals(
         BuckConstant.GEN_DIR + "/java/com/example/AndroidManifest__manifest__.xml",
         androidManifestRule.getPathToOutputFile());
@@ -109,7 +110,7 @@
     AndroidManifest.Builder builder = AndroidManifest.newManifestMergeRuleBuilder(
         new FakeAbstractBuildRuleBuilderParams());
     final AndroidManifest androidManifest = builder
-        .setSkeletonFile("java/com/example/AndroidManifestSkeleton.xml")
+        .setSkeletonFile(new FileSourcePath("java/com/example/AndroidManifestSkeleton.xml"))
         .newBuildable(buildRuleParams, new BuildRuleResolver());
 
     // Then create a BuildRule whose Buildable is the AndroidManifest.
