Fix type assertion error regarding dex_import
Ida6f7bb784efe74cc1fa0e8d370eaee803f08b0f made it possible to add dex_import modules into apex, but that change had a bug. When creating Android.mk for the dex_import module, the code executed an unchecked type assertion to convert java.DexImport to java.Dependency, which cannot be successful. This change fixes the bug by doing a checked type assertion instead. Bug: 157886942 Test: m (test added) Change-Id: Id22c20d42effce539fab10b0d349bf340d467f02
This commit is contained in:
parent
8b1531e7df
commit
9e83f0b531
|
@ -180,13 +180,17 @@ func (a *apexBundle) androidMkForFiles(w io.Writer, apexBundleName, apexName, mo
|
|||
}
|
||||
switch fi.class {
|
||||
case javaSharedLib:
|
||||
javaModule := fi.module.(java.Dependency)
|
||||
// soong_java_prebuilt.mk sets LOCAL_MODULE_SUFFIX := .jar Therefore
|
||||
// we need to remove the suffix from LOCAL_MODULE_STEM, otherwise
|
||||
// we will have foo.jar.jar
|
||||
fmt.Fprintln(w, "LOCAL_MODULE_STEM :=", strings.TrimSuffix(fi.Stem(), ".jar"))
|
||||
fmt.Fprintln(w, "LOCAL_SOONG_CLASSES_JAR :=", javaModule.ImplementationAndResourcesJars()[0].String())
|
||||
fmt.Fprintln(w, "LOCAL_SOONG_HEADER_JAR :=", javaModule.HeaderJars()[0].String())
|
||||
if javaModule, ok := fi.module.(java.Dependency); ok {
|
||||
fmt.Fprintln(w, "LOCAL_SOONG_CLASSES_JAR :=", javaModule.ImplementationAndResourcesJars()[0].String())
|
||||
fmt.Fprintln(w, "LOCAL_SOONG_HEADER_JAR :=", javaModule.HeaderJars()[0].String())
|
||||
} else {
|
||||
fmt.Fprintln(w, "LOCAL_SOONG_CLASSES_JAR :=", fi.builtFile.String())
|
||||
fmt.Fprintln(w, "LOCAL_SOONG_HEADER_JAR :=", fi.builtFile.String())
|
||||
}
|
||||
fmt.Fprintln(w, "LOCAL_SOONG_DEX_JAR :=", fi.builtFile.String())
|
||||
fmt.Fprintln(w, "LOCAL_DEX_PREOPT := false")
|
||||
fmt.Fprintln(w, "include $(BUILD_SYSTEM)/soong_java_prebuilt.mk")
|
||||
|
|
|
@ -329,7 +329,7 @@ func ensureListEmpty(t *testing.T, result []string) {
|
|||
|
||||
// Minimal test
|
||||
func TestBasicApex(t *testing.T) {
|
||||
ctx, _ := testApex(t, `
|
||||
ctx, config := testApex(t, `
|
||||
apex_defaults {
|
||||
name: "myapex-defaults",
|
||||
manifest: ":myapex.manifest",
|
||||
|
@ -484,6 +484,16 @@ func TestBasicApex(t *testing.T) {
|
|||
|
||||
apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule")
|
||||
|
||||
// Make sure that Android.mk is created
|
||||
ab := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(*apexBundle)
|
||||
data := android.AndroidMkDataForTest(t, config, "", ab)
|
||||
var builder strings.Builder
|
||||
data.Custom(&builder, ab.BaseModuleName(), "TARGET_", "", data)
|
||||
|
||||
androidMk := builder.String()
|
||||
ensureContains(t, androidMk, "LOCAL_MODULE := mylib.myapex\n")
|
||||
ensureNotContains(t, androidMk, "LOCAL_MODULE := mylib.com.android.myapex\n")
|
||||
|
||||
optFlags := apexRule.Args["opt_flags"]
|
||||
ensureContains(t, optFlags, "--pubkey vendor/foo/devkeys/testkey.avbpubkey")
|
||||
// Ensure that the NOTICE output is being packaged as an asset.
|
||||
|
|
Loading…
Reference in New Issue