From 0234737f305252f011a24231ee31f4401d6bd72e Mon Sep 17 00:00:00 2001 From: sophiez Date: Tue, 2 Nov 2021 17:58:02 -0700 Subject: Java APIs used by Mainline modules. Add scripts to generate java APIs used by Mainline modules. This is aosp/1879177 with fixed build error that caused by dexdeps analyzing resource only APKs which doesn't contains any .dex files. Now skip the error generates in that case in gen_java_usedby_apex.sh Forrest run:https://android-build.googleplex.com/builds/abtd/run/L38900000951898586 Test: TARGET_BUILD_APPS=com.android.adbd m dist apps_only Change-Id: Id539cbe1b7306ace69c047f95ffc02265a467511 --- apex/builder.go | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'apex/builder.go') diff --git a/apex/builder.go b/apex/builder.go index e22d69411..2e21ddfa1 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -67,6 +67,7 @@ func init() { pctx.HostBinToolVariable("sload_f2fs", "sload_f2fs") pctx.HostBinToolVariable("make_erofs", "make_erofs") pctx.HostBinToolVariable("apex_compression_tool", "apex_compression_tool") + pctx.HostBinToolVariable("dexdeps", "dexdeps") pctx.SourcePathVariable("genNdkUsedbyApexPath", "build/soong/scripts/gen_ndk_usedby_apex.sh") } @@ -707,12 +708,12 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) { "readelf": "${config.ClangBin}/llvm-readelf", }, }) - a.apisUsedByModuleFile = apisUsedbyOutputFile + a.nativeApisUsedByModuleFile = apisUsedbyOutputFile - var libNames []string + var nativeLibNames []string for _, f := range a.filesInfo { if f.class == nativeSharedLib { - libNames = append(libNames, f.stem()) + nativeLibNames = append(nativeLibNames, f.stem()) } } apisBackedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_backing.txt") @@ -720,9 +721,25 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) { rule.Command(). Tool(android.PathForSource(ctx, "build/soong/scripts/gen_ndk_backedby_apex.sh")). Output(apisBackedbyOutputFile). - Flags(libNames) + Flags(nativeLibNames) rule.Build("ndk_backedby_list", "Generate API libraries backed by Apex") - a.apisBackedByModuleFile = apisBackedbyOutputFile + a.nativeApisBackedByModuleFile = apisBackedbyOutputFile + + var javaLibOrApkPath []android.Path + for _, f := range a.filesInfo { + if f.class == javaSharedLib || f.class == app { + javaLibOrApkPath = append(javaLibOrApkPath, f.builtFile) + } + } + javaApiUsedbyOutputFile := android.PathForModuleOut(ctx, a.Name()+"_using.xml") + javaUsedByRule := android.NewRuleBuilder(pctx, ctx) + javaUsedByRule.Command(). + Tool(android.PathForSource(ctx, "build/soong/scripts/gen_java_usedby_apex.sh")). + BuiltTool("dexdeps"). + Output(javaApiUsedbyOutputFile). + Inputs(javaLibOrApkPath) + javaUsedByRule.Build("java_usedby_list", "Generate Java APIs used by Apex") + a.javaApisUsedByModuleFile = javaApiUsedbyOutputFile bundleConfig := a.buildBundleConfig(ctx) -- cgit v1.2.3-59-g8ed1b