diff --git a/java/aar.go b/java/aar.go index 7413c8082..28e388aaf 100644 --- a/java/aar.go +++ b/java/aar.go @@ -734,6 +734,10 @@ func (a *AARImport) DexJarBuildPath() android.Path { return nil } +func (a *AARImport) DexJarInstallPath() android.Path { + return nil +} + func (a *AARImport) AidlIncludeDirs() android.Paths { return nil } diff --git a/java/app.go b/java/app.go index 1b7785d0b..7a109be56 100755 --- a/java/app.go +++ b/java/app.go @@ -1883,16 +1883,22 @@ func (u *usesLibrary) usesLibraryPaths(ctx android.ModuleContext) dexpreopt.Libr ctx.VisitDirectDepsWithTag(usesLibTag, func(m android.Module) { dep := ctx.OtherModuleName(m) if lib, ok := m.(Dependency); ok { - if dexJar := lib.DexJarBuildPath(); dexJar != nil { - usesLibPaths[dep] = &dexpreopt.LibraryPath{ - dexJar, - // TODO(b/132357300): propagate actual install paths here. - filepath.Join("/system/framework", dep+".jar"), - } - } else { + buildPath := lib.DexJarBuildPath() + if buildPath == nil { ctx.ModuleErrorf("module %q in uses_libs or optional_uses_libs must"+ " produce a dex jar, does it have installable: true?", dep) + return } + + var devicePath string + installPath := lib.DexJarInstallPath() + if installPath == nil { + devicePath = filepath.Join("/system/framework", dep+".jar") + } else { + devicePath = android.InstallPathToOnDevicePath(ctx, installPath.(android.InstallPath)) + } + + usesLibPaths[dep] = &dexpreopt.LibraryPath{buildPath, devicePath} } else if ctx.Config().AllowMissingDependencies() { ctx.AddMissingDependencies([]string{dep}) } else { diff --git a/java/device_host_converter.go b/java/device_host_converter.go index 1ffb13f94..877fd8ac2 100644 --- a/java/device_host_converter.go +++ b/java/device_host_converter.go @@ -154,6 +154,10 @@ func (d *DeviceHostConverter) DexJarBuildPath() android.Path { return nil } +func (d *DeviceHostConverter) DexJarInstallPath() android.Path { + return nil +} + func (d *DeviceHostConverter) AidlIncludeDirs() android.Paths { return nil } diff --git a/java/java.go b/java/java.go index 226e0b91b..5f8ad034d 100644 --- a/java/java.go +++ b/java/java.go @@ -502,6 +502,7 @@ type Dependency interface { ResourceJars() android.Paths ImplementationAndResourcesJars() android.Paths DexJarBuildPath() android.Path + DexJarInstallPath() android.Path AidlIncludeDirs() android.Paths ExportedSdkLibs() []string ExportedPlugins() (android.Paths, []string) @@ -1749,6 +1750,10 @@ func (j *Module) DexJarBuildPath() android.Path { return j.dexJarFile } +func (j *Module) DexJarInstallPath() android.Path { + return j.installFile +} + func (j *Module) ResourceJars() android.Paths { if j.resourceJar == nil { return nil @@ -2575,6 +2580,10 @@ func (j *Import) DexJarBuildPath() android.Path { return nil } +func (j *Import) DexJarInstallPath() android.Path { + return nil +} + func (j *Import) AidlIncludeDirs() android.Paths { return j.exportAidlIncludeDirs }