diff --git a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
index 8471985..ad2c85b 100644
--- a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
+++ b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
@@ -45,7 +45,6 @@
 # objc_binary rule which in turn might have objc_library's in its "deps"
 # attribute.
 _TULSI_COMPILE_DEPS = [
-    "binary",
     "bundles",
     "deps",
     "extension",
@@ -63,7 +62,6 @@
     # and want those dependencies to show up in Xcode.
     "tulsi_deps",
     "watch_application",
-    "xctest_app",
 ]
 
 # These are attributes that contain bundles but should not be considered as
@@ -72,7 +70,6 @@
 # bundles as an embedded bundle of the app.
 _TULSI_NON_EMBEDDEDABLE_ATTRS = [
     "test_host",
-    "xctest_app",
 ]
 
 # List of all attributes whose contents should resolve to "support" files; files
@@ -82,7 +79,6 @@
     "app_icons",
     "data",
     "entitlements",
-    "infoplist",
     "infoplists",
     "resources",
     "strings",
@@ -704,10 +700,6 @@
     dep_labels = _collect_dependency_labels(rule, filter, _TULSI_COMPILE_DEPS)
     compile_deps = [str(d) for d in dep_labels if not d.name.endswith(".jar")]
 
-    binary_rule = _get_opt_attr(rule_attr, "binary")
-    if binary_rule and type(binary_rule) == "list":
-        binary_rule = binary_rule[0]
-
     supporting_files = (_collect_supporting_files(rule_attr) +
                         _collect_asset_catalogs(rule_attr) +
                         _collect_bundle_imports(rule_attr))
@@ -718,12 +710,10 @@
     # Keys for attribute and inheritable_attributes keys must be kept in sync
     # with defines in Tulsi's RuleEntry.
     attributes = _dict_omitting_none(
-        binary = _get_label_attr(binary_rule, "label"),
         copts = None if is_swift_library else copts_attr,
         swiftc_opts = copts_attr if is_swift_library else None,
         datamodels = _collect_xcdatamodeld_files(rule_attr, "datamodels"),
         supporting_files = supporting_files,
-        xctest_app = _get_label_attr(rule_attr, "xctest_app.label"),
         test_host = _get_label_attr(rule_attr, "test_host.label"),
         test_bundle = _get_label_attr(rule_attr, "test_bundle.label"),
     )
@@ -740,11 +730,6 @@
         pch = _collect_first_file(rule_attr, "pch"),
     )
 
-    # Merge any attributes on the "binary" dependency into this container rule.
-    binary_attributes = _get_opt_attr(binary_rule, "inheritable_attributes")
-    if binary_attributes:
-        inheritable_attributes = binary_attributes + inheritable_attributes
-
     # Collect extensions for bundled targets.
     extensions = []
     if AppleBundleInfo in target:
diff --git a/src/TulsiGenerator/RuleEntry.swift b/src/TulsiGenerator/RuleEntry.swift
index ea41db8..6f3c229 100644
--- a/src/TulsiGenerator/RuleEntry.swift
+++ b/src/TulsiGenerator/RuleEntry.swift
@@ -147,7 +147,6 @@
   /// Encyclopedia (see http://bazel.build/docs/be/overview.html).
   // Note: This set of must be kept in sync with the tulsi_aspects aspect.
   public enum Attribute: String {
-    case binary
     case bridging_header
     // Contains defines that were specified by the user on the commandline or are built into
     // Bazel itself.
diff --git a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
index bc52c47..e15ff60 100644
--- a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
@@ -1126,12 +1126,9 @@
     let objcLibraryRuleEntry = makeTestRuleEntry("\(testRulePackage):ObjcLib",
       type: "objc_library",
       sourceFiles: testSources)
-    let appleBinaryRuleEntry = makeTestRuleEntry("\(testRulePackage):Tests_test_binary",
-      type: "apple_binary",
-      dependencies: Set([BuildLabel(objcLibraryRuleEntry.label.value)]))
     let testBundleRuleEntry = makeTestRuleEntry("\(testRulePackage):Tests_test_bundle",
       type: "ios_test_bundle",
-      attributes: ["binary": appleBinaryRuleEntry.label.value as AnyObject])
+      dependencies: Set([BuildLabel(objcLibraryRuleEntry.label.value)]))
     let testHostRuleEntry = makeTestRuleEntry("\(testRulePackage):\(testHostTargetName)",
       type: "ios_application", productType: .Application)
     let testRuleEntry = makeTestRuleEntry("\(testRulePackage):\(testRuleTargetName)",
@@ -1144,7 +1141,6 @@
       osDeploymentTarget: "8.0")
 
     let ruleEntryMap = makeRuleEntryMap(withRuleEntries: [objcLibraryRuleEntry,
-                                                          appleBinaryRuleEntry,
                                                           testBundleRuleEntry,
                                                           testHostRuleEntry,
                                                           testRuleEntry])
@@ -1212,12 +1208,9 @@
     let swiftLibraryRuleEntry = makeTestRuleEntry("\(testRulePackage):SwiftLib",
                                                   type: "swift_library",
                                                   sourceFiles: testSources)
-    let appleBinaryRuleEntry = makeTestRuleEntry("\(testRulePackage):Tests_test_binary",
-                                                 type: "apple_binary",
-                                                 dependencies: Set([BuildLabel(swiftLibraryRuleEntry.label.value)]))
     let testBundleRuleEntry = makeTestRuleEntry("\(testRulePackage):Tests_test_bundle",
                                                 type: "ios_test_bundle",
-                                                attributes: ["binary": appleBinaryRuleEntry.label.value as AnyObject])
+                                                dependencies: Set([BuildLabel(swiftLibraryRuleEntry.label.value)]))
     let testHostRuleEntry = makeTestRuleEntry("\(testRulePackage):\(testHostTargetName)",
                                               type: "ios_application", productType: .Application)
     let testRuleEntry = makeTestRuleEntry("\(testRulePackage):\(testRuleTargetName)",
@@ -1231,7 +1224,6 @@
                                           osDeploymentTarget: "8.0")
 
     let ruleEntryMap = makeRuleEntryMap(withRuleEntries: [swiftLibraryRuleEntry,
-                                                          appleBinaryRuleEntry,
                                                           testBundleRuleEntry,
                                                           testHostRuleEntry,
                                                           testRuleEntry])
