diff options
author | 2024-01-17 18:26:27 +0000 | |
---|---|---|
committer | 2024-01-17 20:59:43 +0000 | |
commit | 3a3920129dc42a143da1c28c440a25a74be78589 (patch) | |
tree | 7ebe10717e50acedf2f68f4d3142f55b942223dc /java/hiddenapi.go | |
parent | 1c4cc3d40e0081a065d44b0172e66fb58b1967a1 (diff) |
Add better error handling to bootDexJar function
aosp/2876754 missed adding error handling to one of the places which
consumes the dex jar deapexed from prebuilt apexes. This CL ensures that
when we have multiple prebuilt apexes _without_ flagging, the hiddenapi
processing code emits a more descriptive error "Multiple deapxers..."
rather than a cryptic error "<module> does not provide a dex jar"
Test: m nothing --no-skip-soong-tests
Change-Id: I80849fa7cca17d724ac53c94bb353b169175ee28
Diffstat (limited to 'java/hiddenapi.go')
-rw-r--r-- | java/hiddenapi.go | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/java/hiddenapi.go b/java/hiddenapi.go index e9ee3a2ea..5441a3b6e 100644 --- a/java/hiddenapi.go +++ b/java/hiddenapi.go @@ -44,7 +44,8 @@ type hiddenAPI struct { // // This must be the path to the unencoded dex jar as the encoded dex jar indirectly depends on // this file so using the encoded dex jar here would result in a cycle in the ninja rules. - bootDexJarPath OptionalDexJarPath + bootDexJarPath OptionalDexJarPath + bootDexJarPathErr error // The paths to the classes jars that contain classes and class members annotated with // the UnsupportedAppUsage annotation that need to be extracted as part of the hidden API @@ -56,7 +57,10 @@ type hiddenAPI struct { uncompressDexState *bool } -func (h *hiddenAPI) bootDexJar() OptionalDexJarPath { +func (h *hiddenAPI) bootDexJar(ctx android.ModuleErrorfContext) OptionalDexJarPath { + if h.bootDexJarPathErr != nil { + ctx.ModuleErrorf(h.bootDexJarPathErr.Error()) + } return h.bootDexJarPath } @@ -77,7 +81,7 @@ type hiddenAPIModule interface { } type hiddenAPIIntf interface { - bootDexJar() OptionalDexJarPath + bootDexJar(ctx android.ModuleErrorfContext) OptionalDexJarPath classesJars() android.Paths uncompressDex() *bool } @@ -126,6 +130,11 @@ func (h *hiddenAPI) initHiddenAPI(ctx android.ModuleContext, dexJar OptionalDexJ h.active = isModuleInBootClassPath(ctx, module) } +// Store any error encountered during the initialization of hiddenapi structure (e.g. unflagged co-existing prebuilt apexes) +func (h *hiddenAPI) initHiddenAPIError(err error) { + h.bootDexJarPathErr = err +} + func isModuleInBootClassPath(ctx android.BaseModuleContext, module android.Module) bool { // Get the configured platform and apex boot jars. nonApexBootJars := ctx.Config().NonApexBootJars() |