diff --git a/java/aar.go b/java/aar.go
index 07392f6..4691d70 100644
--- a/java/aar.go
+++ b/java/aar.go
@@ -315,7 +315,7 @@
 
 	if !hasVersionName {
 		var versionName string
-		if ctx.ModuleName() == "framework-res" {
+		if ctx.ModuleName() == "framework-res" || ctx.ModuleName() == "omnirom-res" {
 			// Some builds set AppsDefaultVersionName() to include the build number ("O-123456").  aapt2 copies the
 			// version name of framework-res into app manifests as compileSdkVersionCodename, which confuses things
 			// if it contains the build number.  Use the PlatformVersionName instead.
@@ -340,6 +340,9 @@
 	if sdkDep.frameworkResModule != "" {
 		ctx.AddVariationDependencies(nil, frameworkResTag, sdkDep.frameworkResModule)
 	}
+	if sdkDep.omniromResModule != "" {
+		ctx.AddVariationDependencies(nil, omniromResTag, sdkDep.omniromResModule)
+	}
 }
 
 var extractAssetsRule = pctx.AndroidStaticRule("extractAssets",
@@ -745,7 +748,7 @@
 				sharedResourcesNodeDepSets = append(sharedResourcesNodeDepSets, aarDep.ResourcesNodeDepSet())
 				sharedLibs = append(sharedLibs, exportPackage)
 			}
-		case frameworkResTag:
+		case frameworkResTag, omniromResTag:
 			if exportPackage != nil {
 				sharedLibs = append(sharedLibs, exportPackage)
 			}
@@ -1103,6 +1106,9 @@
 		if sdkDep.useModule && sdkDep.frameworkResModule != "" {
 			ctx.AddVariationDependencies(nil, frameworkResTag, sdkDep.frameworkResModule)
 		}
+		if sdkDep.useModule && sdkDep.omniromResModule != "" {
+			ctx.AddVariationDependencies(nil, omniromResTag, sdkDep.omniromResModule)
+		}
 	}
 
 	ctx.AddVariationDependencies(nil, libTag, a.properties.Libs...)
diff --git a/java/android_manifest.go b/java/android_manifest.go
index 8599003..fdbe43b 100644
--- a/java/android_manifest.go
+++ b/java/android_manifest.go
@@ -153,7 +153,7 @@
 		targetSdkVersion := targetSdkVersionForManifestFixer(ctx, params)
 
 		if useApiFingerprint, fingerprintTargetSdkVersion, fingerprintDeps :=
-			UseApiFingerprint(ctx); useApiFingerprint && ctx.ModuleName() != "framework-res" {
+			UseApiFingerprint(ctx); useApiFingerprint && ctx.ModuleName() != "framework-res" && ctx.ModuleName() != "omnirom-res" {
 			targetSdkVersion = fingerprintTargetSdkVersion
 			deps = append(deps, fingerprintDeps)
 		}
@@ -171,7 +171,7 @@
 		}
 
 		if useApiFingerprint, fingerprintMinSdkVersion, fingerprintDeps :=
-			UseApiFingerprint(ctx); useApiFingerprint && ctx.ModuleName() != "framework-res" {
+			UseApiFingerprint(ctx); useApiFingerprint && ctx.ModuleName() != "framework-res" && ctx.ModuleName() != "omnirom-res" {
 			minSdkVersion = fingerprintMinSdkVersion
 			deps = append(deps, fingerprintDeps)
 		}
diff --git a/java/androidmk.go b/java/androidmk.go
index a1bc904..b050445 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -368,7 +368,7 @@
 				entries.SetOptionalPath("LOCAL_SOONG_PROGUARD_DICT", app.dexer.proguardDictionary)
 				entries.SetOptionalPath("LOCAL_SOONG_PROGUARD_USAGE_ZIP", app.dexer.proguardUsageZip)
 
-				if app.Name() == "framework-res" {
+				if app.Name() == "framework-res" || app.Name() == "omnirom-res" {
 					entries.SetString("LOCAL_MODULE_PATH", "$(TARGET_OUT_JAVA_LIBRARIES)")
 					// Make base_rules.mk not put framework-res in a subdirectory called
 					// framework_res.
@@ -500,7 +500,7 @@
 			entries.SetPath("LOCAL_SOONG_AAR", a.aarFile)
 		}
 
-		if a.Name() == "framework-res" {
+		if a.Name() == "framework-res" || a.Name() == "omnirom-res" {
 			entries.SetString("LOCAL_MODULE_PATH", "$(TARGET_OUT_JAVA_LIBRARIES)")
 			// Make base_rules.mk not put framework-res in a subdirectory called
 			// framework_res.
diff --git a/java/app.go b/java/app.go
index 8a466e9..fe98a7f 100644
--- a/java/app.go
+++ b/java/app.go
@@ -592,6 +592,9 @@
 	if ctx.ModuleName() == "framework-res" {
 		// framework-res.apk is installed as system/framework/framework-res.apk
 		installDir = "framework"
+	} else if ctx.ModuleName() == "omnirom-res" {
+		// omnirom-res.apk is installed as system/framework/omnirom-res.apk
+		installDir = "framework"
 	} else if a.Privileged() {
 		installDir = filepath.Join("priv-app", a.installApkName)
 	} else {
@@ -616,7 +619,7 @@
 
 	var packageResources = a.exportPackage
 
-	if ctx.ModuleName() != "framework-res" {
+	if ctx.ModuleName() != "framework-res" && ctx.ModuleName() != "omnirom-res" {
 		if a.dexProperties.resourceShrinkingEnabled(ctx) {
 			protoFile := android.PathForModuleOut(ctx, packageResources.Base()+".proto.apk")
 			aapt2Convert(ctx, protoFile, packageResources, "proto")
@@ -805,6 +808,9 @@
 	if ctx.ModuleName() == "framework-res" {
 		// framework-res.apk is installed as system/framework/framework-res.apk
 		a.installDir = android.PathForModuleInstall(ctx, "framework")
+	} else if ctx.ModuleName() == "omnirom-res" {
+		// omnirom-res.apk is installed as system/framework/omnirom-res.apk
+		a.installDir = android.PathForModuleInstall(ctx, "framework")
 	} else if a.Privileged() {
 		a.installDir = android.PathForModuleInstall(ctx, "priv-app", a.installApkName)
 	} else if ctx.InstallInTestcases() {
diff --git a/java/app_test.go b/java/app_test.go
index e5c318e..c15980e 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -77,8 +77,11 @@
 			expectedLinkImplicits = append(expectedLinkImplicits, manifestFixer.Output.String())
 
 			frameworkRes := result.ModuleForTests("framework-res", "android_common")
+			omniromRes := result.ModuleForTests("omnirom-res", "android_common")
 			expectedLinkImplicits = append(expectedLinkImplicits,
 				frameworkRes.Output("package-res.apk").Output.String())
+			expectedLinkImplicits = append(expectedLinkImplicits,
+				omniromRes.Output("package-res.apk").Output.String())
 
 			// Test the mapping from input files to compiled output file names
 			compile := foo.Output(compiledResourceFiles[0])
diff --git a/java/java.go b/java/java.go
index 08fb678..8899ba4 100644
--- a/java/java.go
+++ b/java/java.go
@@ -421,6 +421,7 @@
 	bootClasspathTag        = dependencyTag{name: "bootclasspath", runtimeLinked: true}
 	systemModulesTag        = dependencyTag{name: "system modules", runtimeLinked: true}
 	frameworkResTag         = dependencyTag{name: "framework-res"}
+	omniromResTag           = dependencyTag{name: "omnirom-res"}
 	kotlinStdlibTag         = dependencyTag{name: "kotlin-stdlib", runtimeLinked: true}
 	kotlinAnnotationsTag    = dependencyTag{name: "kotlin-annotations", runtimeLinked: true}
 	kotlinPluginTag         = dependencyTag{name: "kotlin-plugin", toolchain: true}
@@ -469,6 +470,7 @@
 	java9Classpath []string
 
 	frameworkResModule string
+	omniromResModule   string
 
 	jars android.Paths
 	aidl android.OptionalPath
@@ -512,6 +514,10 @@
 	if sdkDep.systemModules != "" {
 		ctx.AddVariationDependencies(nil, systemModulesTag, sdkDep.systemModules)
 	}
+
+	if ctx.ModuleName() == "omnirom-res" {
+		ctx.AddVariationDependencies(nil, frameworkResTag, "framework-res")
+	}
 }
 
 type deps struct {
diff --git a/java/sdk.go b/java/sdk.go
index 4ef4ee2..72184cf 100644
--- a/java/sdk.go
+++ b/java/sdk.go
@@ -168,6 +168,7 @@
 			systemModules:      systemModules,
 			java9Classpath:     []string{module},
 			frameworkResModule: "framework-res",
+			omniromResModule:   "omnirom-res",
 			aidl:               android.OptionalPathForPath(aidl),
 		}
 	}
@@ -180,6 +181,7 @@
 			bootclasspath:      corePlatformBootclasspathLibraries(ctx),
 			classpath:          config.FrameworkLibraries,
 			frameworkResModule: "framework-res",
+			omniromResModule:   "omnirom-res",
 		}
 	case android.SdkNone:
 		systemModules := sdkContext.SystemModules()
diff --git a/java/testing.go b/java/testing.go
index 5ae326d..20152fd 100644
--- a/java/testing.go
+++ b/java/testing.go
@@ -546,6 +546,11 @@
 		android_app {
 			name: "framework-res",
 			sdk_version: "core_platform",
+		}
+
+		android_app {
+			name: "omnirom-res",
+			sdk_version: "core_platform",
 		}`
 
 	systemModules := []string{
