Add support for android_library modules

Add support for compiling android_library modules into AARs,
and refactor app support on top of it.

Bug: 73724997
Test: app_test.go
Change-Id: I1dfac5fffe577c6680bc4709147b2061eb7d819c
diff --git a/java/java.go b/java/java.go
index 04ce469..bc58df3 100644
--- a/java/java.go
+++ b/java/java.go
@@ -334,6 +334,8 @@
 	module        string
 	systemModules string
 
+	frameworkResModule string
+
 	jar  android.Path
 	aidl android.Path
 }
@@ -423,11 +425,12 @@
 		}
 	}
 
-	toModule := func(m string) sdkDep {
+	toModule := func(m, r string) sdkDep {
 		ret := sdkDep{
-			useModule:     true,
-			module:        m,
-			systemModules: m + "_system_modules",
+			useModule:          true,
+			module:             m,
+			systemModules:      m + "_system_modules",
+			frameworkResModule: r,
 		}
 		if m == "core.current.stubs" {
 			ret.systemModules = "core-system-modules"
@@ -442,16 +445,17 @@
 	switch v {
 	case "":
 		return sdkDep{
-			useDefaultLibs: true,
+			useDefaultLibs:     true,
+			frameworkResModule: "framework-res",
 		}
 	case "current":
-		return toModule("android_stubs_current")
+		return toModule("android_stubs_current", "framework-res")
 	case "system_current":
-		return toModule("android_system_stubs_current")
+		return toModule("android_system_stubs_current", "framework-res")
 	case "test_current":
-		return toModule("android_test_stubs_current")
+		return toModule("android_test_stubs_current", "framework-res")
 	case "core_current":
-		return toModule("core.current.stubs")
+		return toModule("core.current.stubs", "")
 	default:
 		return toFile(v)
 	}
@@ -681,7 +685,10 @@
 		tag := ctx.OtherModuleDependencyTag(module)
 
 		if to, ok := module.(*Library); ok {
-			checkLinkType(ctx, j, to, tag.(dependencyTag))
+			switch tag {
+			case bootClasspathTag, libTag, staticLibTag:
+				checkLinkType(ctx, j, to, tag.(dependencyTag))
+			}
 		}
 		switch dep := module.(type) {
 		case Dependency: