diff --git a/apex/apex_test.go b/apex/apex_test.go
index b58441a..7e67c0f 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -11537,17 +11537,6 @@
 		android.AssertStringMatches(t, "Could not find the correct boot dex jar in monolithic hiddenapi flags generation command", monolithicHiddenapiFlagsCmd, "--boot-dex="+expectedBootJar)
 	}
 
-	// Check that system server jars is copied to out/soong/system_server_dexjars. This hardcoded location is used by dexpreopt
-	checkSystemServerJarOnHost := func(t *testing.T, ctx *android.TestContext, m, libName, expectedSystemServerJarPath string) {
-		variation := "android_common_com.android.foo"
-		if m == "com.android.foo" {
-			m = libName // for source builds, the cp rule is still generated by the java_library module
-			variation = "android_common_apex10000"
-		}
-		output := ctx.ModuleForTests(m, variation).MaybeOutput("system_server_dexjars/" + libName + ".jar")
-		android.AssertStringListContains(t, libName+" is expected to be copied to out/soong/system_server_dexjars/ from ", output.Implicits.Strings(), expectedSystemServerJarPath)
-	}
-
 	bp := `
 		// Source APEX.
 
@@ -11571,24 +11560,6 @@
 			},
 		}
 
-		java_library {
-			name: "service-foo",
-			srcs: ["foo.java"],
-			installable: true,
-			apex_available: [
-				"com.android.foo",
-			],
-		}
-
-		systemserverclasspath_fragment {
-			name: "foo-systemserverclasspath-fragment",
-			contents: ["service-foo"],
-			apex_available: [
-				"com.android.foo",
-			],
-		}
-
-
 		apex_key {
 			name: "com.android.foo.key",
 			public_key: "com.android.foo.avbpubkey",
@@ -11599,16 +11570,18 @@
 			name: "com.android.foo",
 			key: "com.android.foo.key",
 			bootclasspath_fragments: ["foo-bootclasspath-fragment"],
-			systemserverclasspath_fragments: ["foo-systemserverclasspath-fragment"],
 			updatable: false,
 		}
 
 		// Prebuilt APEX.
 
-		java_import {
+		java_sdk_library_import {
 			name: "framework-foo",
-			jars: ["foo.jar"],
+			public: {
+				jars: ["foo.jar"],
+			},
 			apex_available: ["com.android.foo"],
+			shared_library: false,
 		}
 
 		prebuilt_bootclasspath_fragment {
@@ -11626,27 +11599,11 @@
 			],
 		}
 
-		java_import {
-			name: "service-foo",
-			jars: ["foo.jar"],
-			apex_available: ["com.android.foo"],
-		}
-
-		prebuilt_systemserverclasspath_fragment {
-			name: "foo-systemserverclasspath-fragment",
-			contents: ["service-foo"],
-			apex_available: [
-				"com.android.foo",
-			],
-		}
-
-
 		prebuilt_apex {
 			name: "com.android.foo",
 			apex_name: "com.android.foo",
 			src: "com.android.foo-arm.apex",
 			exported_bootclasspath_fragments: ["foo-bootclasspath-fragment"],
-			exported_systemserverclasspath_fragments: ["foo-systemserverclasspath-fragment"],
 		}
 
 		// Another Prebuilt ART APEX
@@ -11655,41 +11612,48 @@
 			apex_name: "com.android.foo", // Used to determine the API domain
 			src: "com.android.foo-arm.apex",
 			exported_bootclasspath_fragments: ["foo-bootclasspath-fragment"],
-			exported_systemserverclasspath_fragments: ["foo-systemserverclasspath-fragment"],
 		}
 
 		// APEX contribution modules
 
 		apex_contributions {
-			name: "foo.contributions",
+			name: "foo.source.contributions",
 			api_domain: "com.android.foo",
-			contents: ["%v"],
+			contents: ["com.android.foo"],
+		}
+
+		apex_contributions {
+			name: "foo.prebuilt.contributions",
+			api_domain: "com.android.foo",
+			contents: ["prebuilt_com.android.foo"],
+		}
+
+		apex_contributions {
+			name: "foo.prebuilt.v2.contributions",
+			api_domain: "com.android.foo",
+			contents: ["com.android.foo.v2"], // prebuilt_ prefix is missing because of prebuilt_rename mutator
 		}
 	`
 
 	testCases := []struct {
-		desc                    string
-		selectedApex            string
-		expectedBootJar         string
-		expectedSystemServerJar string
+		desc                      string
+		selectedApexContributions string
+		expectedBootJar           string
 	}{
 		{
-			desc:                    "Source apex com.android.foo is selected, bootjar should come from source java library",
-			selectedApex:            "com.android.foo",
-			expectedBootJar:         "out/soong/.intermediates/foo-bootclasspath-fragment/android_common_apex10000/hiddenapi-modular/encoded/framework-foo.jar",
-			expectedSystemServerJar: "out/soong/.intermediates/service-foo/android_common_apex10000/aligned/service-foo.jar",
+			desc:                      "Source apex com.android.foo is selected, bootjar should come from source java library",
+			selectedApexContributions: "foo.source.contributions",
+			expectedBootJar:           "out/soong/.intermediates/foo-bootclasspath-fragment/android_common_apex10000/hiddenapi-modular/encoded/framework-foo.jar",
 		},
 		{
-			desc:                    "Prebuilt apex prebuilt_com.android.foo is selected, profile should come from .prof deapexed from the prebuilt",
-			selectedApex:            "prebuilt_com.android.foo",
-			expectedBootJar:         "out/soong/.intermediates/prebuilt_com.android.foo.deapexer/android_common/deapexer/javalib/framework-foo.jar",
-			expectedSystemServerJar: "out/soong/.intermediates/prebuilt_com.android.foo.deapexer/android_common/deapexer/javalib/service-foo.jar",
+			desc:                      "Prebuilt apex prebuilt_com.android.foo is selected, profile should come from .prof deapexed from the prebuilt",
+			selectedApexContributions: "foo.prebuilt.contributions",
+			expectedBootJar:           "out/soong/.intermediates/prebuilt_com.android.foo.deapexer/android_common/deapexer/javalib/framework-foo.jar",
 		},
 		{
-			desc:                    "Prebuilt apex prebuilt_com.android.foo.v2 is selected, profile should come from .prof deapexed from the prebuilt",
-			selectedApex:            "com.android.foo.v2",
-			expectedBootJar:         "out/soong/.intermediates/prebuilt_com.android.foo.v2.deapexer/android_common/deapexer/javalib/framework-foo.jar",
-			expectedSystemServerJar: "out/soong/.intermediates/prebuilt_com.android.foo.v2.deapexer/android_common/deapexer/javalib/service-foo.jar",
+			desc:                      "Prebuilt apex prebuilt_com.android.foo.v2 is selected, profile should come from .prof deapexed from the prebuilt",
+			selectedApexContributions: "foo.prebuilt.v2.contributions",
+			expectedBootJar:           "out/soong/.intermediates/prebuilt_com.android.foo.v2.deapexer/android_common/deapexer/javalib/framework-foo.jar",
 		},
 	}
 
@@ -11701,21 +11665,19 @@
 	for _, tc := range testCases {
 		preparer := android.GroupFixturePreparers(
 			java.FixtureConfigureApexBootJars("com.android.foo:framework-foo"),
-			dexpreopt.FixtureSetApexSystemServerJars("com.android.foo:service-foo"),
 			android.FixtureMergeMockFs(map[string][]byte{
 				"system/sepolicy/apex/com.android.foo-file_contexts": nil,
 			}),
 			android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
 				variables.BuildFlags = map[string]string{
-					"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": "foo.contributions",
+					"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": tc.selectedApexContributions,
 				}
 			}),
 		)
-		ctx := testDexpreoptWithApexes(t, fmt.Sprintf(bp, tc.selectedApex), "", preparer, fragment)
+		ctx := testDexpreoptWithApexes(t, bp, "", preparer, fragment)
 		checkBootDexJarPath(t, ctx, "framework-foo", tc.expectedBootJar)
 		checkBootJarsPackageCheck(t, ctx, tc.expectedBootJar)
 		checkBootJarsForMonolithicHiddenapi(t, ctx, tc.expectedBootJar)
-		checkSystemServerJarOnHost(t, ctx, tc.selectedApex, "service-foo", tc.expectedSystemServerJar)
 	}
 }
 
