diff --git a/java/app_test.go b/java/app_test.go
index ba017a1..2e53130 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -16,8 +16,10 @@
 
 import (
 	"android/soong/android"
+	"fmt"
 	"reflect"
 	"sort"
+	"strings"
 	"testing"
 )
 
@@ -237,3 +239,94 @@
 		})
 	}
 }
+
+func TestAppSdkVersion(t *testing.T) {
+	testCases := []struct {
+		name                  string
+		sdkVersion            string
+		platformSdkInt        int
+		platformSdkCodename   string
+		platformSdkFinal      bool
+		expectedMinSdkVersion string
+	}{
+		{
+			name:                  "current final SDK",
+			sdkVersion:            "current",
+			platformSdkInt:        27,
+			platformSdkCodename:   "REL",
+			platformSdkFinal:      true,
+			expectedMinSdkVersion: "27",
+		},
+		{
+			name:                  "current non-final SDK",
+			sdkVersion:            "current",
+			platformSdkInt:        27,
+			platformSdkCodename:   "OMR1",
+			platformSdkFinal:      false,
+			expectedMinSdkVersion: "OMR1",
+		},
+		{
+			name:                  "default final SDK",
+			sdkVersion:            "",
+			platformSdkInt:        27,
+			platformSdkCodename:   "REL",
+			platformSdkFinal:      true,
+			expectedMinSdkVersion: "27",
+		},
+		{
+			name:                  "default non-final SDK",
+			sdkVersion:            "",
+			platformSdkInt:        27,
+			platformSdkCodename:   "OMR1",
+			platformSdkFinal:      false,
+			expectedMinSdkVersion: "OMR1",
+		},
+		{
+			name:                  "14",
+			sdkVersion:            "14",
+			expectedMinSdkVersion: "14",
+		},
+	}
+
+	for _, test := range testCases {
+		t.Run(test.name, func(t *testing.T) {
+			bp := fmt.Sprintf(`android_app {
+					name: "foo",
+					srcs: ["a.java"],
+					sdk_version: "%s",
+				}`, test.sdkVersion)
+
+			config := testConfig(nil)
+			config.TestProductVariables.Platform_sdk_version = &test.platformSdkInt
+			config.TestProductVariables.Platform_sdk_codename = &test.platformSdkCodename
+			config.TestProductVariables.Platform_sdk_final = &test.platformSdkFinal
+
+			ctx := testAppContext(config, bp, nil)
+
+			run(t, ctx, config)
+
+			foo := ctx.ModuleForTests("foo", "android_common")
+			link := foo.Output("package-res.apk")
+			linkFlags := strings.Split(link.Args["flags"], " ")
+			min := android.IndexList("--min-sdk-version", linkFlags)
+			target := android.IndexList("--target-sdk-version", linkFlags)
+
+			if min == -1 || target == -1 || min == len(linkFlags)-1 || target == len(linkFlags)-1 {
+				t.Fatalf("missing --min-sdk-version or --target-sdk-version in link flags: %q", linkFlags)
+			}
+
+			gotMinSdkVersion := linkFlags[min+1]
+			gotTargetSdkVersion := linkFlags[target+1]
+
+			if gotMinSdkVersion != test.expectedMinSdkVersion {
+				t.Errorf("incorrect --min-sdk-version, expected %q got %q",
+					test.expectedMinSdkVersion, gotMinSdkVersion)
+			}
+
+			if gotTargetSdkVersion != test.expectedMinSdkVersion {
+				t.Errorf("incorrect --target-sdk-version, expected %q got %q",
+					test.expectedMinSdkVersion, gotTargetSdkVersion)
+			}
+		})
+	}
+}
