No need for patch, just use variants.

Test: Ran cargo2android, compared output
Change-Id: I0a7fb5a824ccc866afc25ca0f0d695d494fa2602
diff --git a/Android.bp b/Android.bp
index 24cde59..652d6e2 100644
--- a/Android.bp
+++ b/Android.bp
@@ -18,9 +18,10 @@
     ],
 }
 
-rust_defaults {
-    name: "tokio_defaults",
+rust_library {
+    name: "libtokio",
     host_supported: true,
+    crate_name: "tokio",
     cargo_env_compat: true,
     cargo_pkg_version: "1.25.0",
     srcs: ["src/lib.rs"],
@@ -55,9 +56,7 @@
     proc_macros: ["libtokio_macros"],
     apex_available: [
         "//apex_available:platform",
-        "com.android.btservices",
-        "com.android.resolv",
-        "com.android.uwb",
+        "//apex_available:anyapex",
     ],
     product_available: true,
     vendor_available: true,
@@ -65,18 +64,49 @@
 }
 
 rust_library {
-    name: "libtokio",
-    crate_name: "tokio",
-    defaults: ["tokio_defaults"],
-}
-
-rust_library {
     name: "libtokio_for_test",
+    host_supported: true,
     crate_name: "tokio",
-    defaults: ["tokio_defaults"],
+    cargo_env_compat: true,
+    cargo_pkg_version: "1.25.0",
+    srcs: ["src/lib.rs"],
+    edition: "2018",
     features: [
+        "bytes",
+        "fs",
+        "io-util",
+        "libc",
+        "macros",
+        "memchr",
+        "mio",
+        "net",
+        "num_cpus",
+        "rt",
+        "rt-multi-thread",
+        "socket2",
+        "sync",
         "test-util",
+        "time",
+        "tokio-macros",
+        "windows-sys",
     ],
+    rustlibs: [
+        "libbytes",
+        "liblibc",
+        "libmemchr",
+        "libmio",
+        "libnum_cpus",
+        "libpin_project_lite",
+        "libsocket2",
+    ],
+    proc_macros: ["libtokio_macros"],
+    apex_available: [
+        "//apex_available:platform",
+        "//apex_available:anyapex",
+    ],
+    product_available: true,
+    vendor_available: true,
+    min_sdk_version: "29",
 }
 
 rust_defaults {
diff --git a/cargo2android.json b/cargo2android.json
index 443e022..123896c 100644
--- a/cargo2android.json
+++ b/cargo2android.json
@@ -1,14 +1,15 @@
 {
   "add-toplevel-block": "cargo2android_tests.bp",
-  "apex-available": [
-    "//apex_available:platform",
-    "com.android.btservices",
-    "com.android.resolv",
-    "com.android.uwb"
-  ],
   "device": true,
-  "features": "fs,io-util,macros,net,rt,rt-multi-thread,sync,time",
   "min-sdk-version": "29",
-  "vendor-available": true,
-  "run": true
+  "run": true,
+  "variants": [
+    {
+      "features": "fs,io-util,macros,net,rt,rt-multi-thread,sync,time"
+    },
+    {
+      "features": "fs,io-util,macros,net,rt,rt-multi-thread,sync,test-util,time",
+      "suffix": "_for_test"
+    }
+  ]
 }
diff --git a/patches/Android.bp.patch b/patches/Android.bp.patch
deleted file mode 100644
index 68fc808..0000000
--- a/patches/Android.bp.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-diff --git a/Android.bp b/Android.bp
-index 7d066e6..58422c6 100644
---- a/Android.bp
-+++ b/Android.bp
-@@ -18,10 +18,9 @@
-     ],
- }
- 
--rust_library {
--    name: "libtokio",
-+rust_defaults {
-+    name: "tokio_defaults",
-     host_supported: true,
--    crate_name: "tokio",
-     cargo_env_compat: true,
-     cargo_pkg_version: "1.25.0",
-     srcs: ["src/lib.rs"],
-@@ -64,6 +63,21 @@
-     min_sdk_version: "29",
- }
- 
-+rust_library {
-+    name: "libtokio",
-+    crate_name: "tokio",
-+    defaults: ["tokio_defaults"],
-+}
-+
-+rust_library {
-+    name: "libtokio_for_test",
-+    crate_name: "tokio",
-+    defaults: ["tokio_defaults"],
-+    features: [
-+        "test-util",
-+    ],
-+}
-+
- rust_defaults {
-     name: "tokio_defaults_tests",
-     crate_name: "tokio",