Loading apex/apex_test.go +12 −9 Original line number Diff line number Diff line Loading @@ -4526,9 +4526,10 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { ctx := testDexpreoptWithApexes(t, bp, "", transform) checkBootDexJarPath(t, ctx, ".intermediates/myapex.deapexer/android_common/deapexer/javalib/libfoo.jar") // Make sure that the dex file from the prebuilt_apex does NOT contribute to the hiddenapi index // file. checkHiddenAPIIndexInputs(t, ctx, ``) // Make sure that the dex file from the prebuilt_apex contributes to the hiddenapi index file. checkHiddenAPIIndexInputs(t, ctx, ` .intermediates/libfoo/android_common_myapex/hiddenapi/index.csv `) }) t.Run("prebuilt with source library preferred", func(t *testing.T) { Loading Loading @@ -4599,9 +4600,10 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { ctx := testDexpreoptWithApexes(t, bp, "", transform) checkBootDexJarPath(t, ctx, ".intermediates/myapex.deapexer/android_common/deapexer/javalib/libfoo.jar") // Make sure that the dex file from the prebuilt_apex does NOT contribute to the hiddenapi index // file. checkHiddenAPIIndexInputs(t, ctx, ``) // Make sure that the dex file from the prebuilt_apex contributes to the hiddenapi index file. checkHiddenAPIIndexInputs(t, ctx, ` .intermediates/prebuilt_libfoo/android_common_myapex/hiddenapi/index.csv `) }) t.Run("prebuilt with source apex preferred", func(t *testing.T) { Loading Loading @@ -4698,9 +4700,10 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { ctx := testDexpreoptWithApexes(t, bp, "", transform) checkBootDexJarPath(t, ctx, ".intermediates/myapex.deapexer/android_common/deapexer/javalib/libfoo.jar") // Make sure that the dex file from the prebuilt_apex does NOT contribute to the hiddenapi index // file. checkHiddenAPIIndexInputs(t, ctx, ``) // Make sure that the dex file from the prebuilt_apex contributes to the hiddenapi index file. checkHiddenAPIIndexInputs(t, ctx, ` .intermediates/prebuilt_libfoo/android_common_prebuilt_myapex/hiddenapi/index.csv `) }) } Loading java/hiddenapi.go +13 −7 Original line number Diff line number Diff line Loading @@ -144,12 +144,7 @@ func (h *hiddenAPI) hiddenAPIExtractAndEncode(ctx android.ModuleContext, name st return dexJar } // More than one library with the same classes may need to be encoded but only one should be // used as a source of information for hidden API processing otherwise it will result in // duplicate entries in the files. if primary { h.hiddenAPIExtractInformation(ctx, dexJar, implementationJar) } h.hiddenAPIExtractInformation(ctx, dexJar, implementationJar, primary) if !h.annotationsOnly { hiddenAPIJar := android.PathForModuleOut(ctx, "hiddenapi", name+".jar").OutputPath Loading @@ -169,7 +164,18 @@ func (h *hiddenAPI) hiddenAPIExtractAndEncode(ctx android.ModuleContext, name st // // It also makes the dex jar available for use when generating the // hiddenAPISingletonPathsStruct.stubFlags. func (h *hiddenAPI) hiddenAPIExtractInformation(ctx android.ModuleContext, dexJar, classesJar android.Path) { func (h *hiddenAPI) hiddenAPIExtractInformation(ctx android.ModuleContext, dexJar, classesJar android.Path, primary bool) { if !h.active { return } // More than one library with the same classes may need to be encoded but only one should be // used as a source of information for hidden API processing otherwise it will result in // duplicate entries in the files. if !primary { return } stubFlagsCSV := hiddenAPISingletonPaths(ctx).stubFlags flagsCSV := android.PathForModuleOut(ctx, "hiddenapi", "flags.csv") Loading java/java.go +7 −5 Original line number Diff line number Diff line Loading @@ -2917,6 +2917,9 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.properties.Aidl.Export_include_dirs) if ctx.Device() { configurationName := j.BaseModuleName() primary := j.Prebuilt().UsePrebuilt() // If this is a variant created for a prebuilt_apex then use the dex implementation jar // obtained from the associated deapexer module. ai := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo) Loading @@ -2930,8 +2933,10 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { // Get the path of the dex implementation jar from the `deapexer` module. di := ctx.OtherModuleProvider(deapexerModule, android.DeapexerProvider).(android.DeapexerInfo) j.dexJarFile = di.PrebuiltExportPath(j.BaseModuleName(), ".dexjar") if j.dexJarFile == nil { if dexOutputPath := di.PrebuiltExportPath(j.BaseModuleName(), ".dexjar"); dexOutputPath != nil { j.dexJarFile = dexOutputPath j.hiddenAPI.hiddenAPIExtractInformation(ctx, dexOutputPath, outputFile, primary) } else { // This should never happen as a variant for a prebuilt_apex is only created if the // prebuilt_apex has been configured to export the java library dex file. ctx.ModuleErrorf("internal error: no dex implementation jar available from prebuilt_apex %q", deapexerModule.Name()) Loading Loading @@ -2961,9 +2966,6 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { return } configurationName := j.BaseModuleName() primary := j.Prebuilt().UsePrebuilt() // Hidden API CSV generation and dex encoding dexOutputFile = j.hiddenAPIExtractAndEncode(ctx, configurationName, primary, dexOutputFile, outputFile, proptools.Bool(j.dexProperties.Uncompress_dex)) Loading Loading
apex/apex_test.go +12 −9 Original line number Diff line number Diff line Loading @@ -4526,9 +4526,10 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { ctx := testDexpreoptWithApexes(t, bp, "", transform) checkBootDexJarPath(t, ctx, ".intermediates/myapex.deapexer/android_common/deapexer/javalib/libfoo.jar") // Make sure that the dex file from the prebuilt_apex does NOT contribute to the hiddenapi index // file. checkHiddenAPIIndexInputs(t, ctx, ``) // Make sure that the dex file from the prebuilt_apex contributes to the hiddenapi index file. checkHiddenAPIIndexInputs(t, ctx, ` .intermediates/libfoo/android_common_myapex/hiddenapi/index.csv `) }) t.Run("prebuilt with source library preferred", func(t *testing.T) { Loading Loading @@ -4599,9 +4600,10 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { ctx := testDexpreoptWithApexes(t, bp, "", transform) checkBootDexJarPath(t, ctx, ".intermediates/myapex.deapexer/android_common/deapexer/javalib/libfoo.jar") // Make sure that the dex file from the prebuilt_apex does NOT contribute to the hiddenapi index // file. checkHiddenAPIIndexInputs(t, ctx, ``) // Make sure that the dex file from the prebuilt_apex contributes to the hiddenapi index file. checkHiddenAPIIndexInputs(t, ctx, ` .intermediates/prebuilt_libfoo/android_common_myapex/hiddenapi/index.csv `) }) t.Run("prebuilt with source apex preferred", func(t *testing.T) { Loading Loading @@ -4698,9 +4700,10 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { ctx := testDexpreoptWithApexes(t, bp, "", transform) checkBootDexJarPath(t, ctx, ".intermediates/myapex.deapexer/android_common/deapexer/javalib/libfoo.jar") // Make sure that the dex file from the prebuilt_apex does NOT contribute to the hiddenapi index // file. checkHiddenAPIIndexInputs(t, ctx, ``) // Make sure that the dex file from the prebuilt_apex contributes to the hiddenapi index file. checkHiddenAPIIndexInputs(t, ctx, ` .intermediates/prebuilt_libfoo/android_common_prebuilt_myapex/hiddenapi/index.csv `) }) } Loading
java/hiddenapi.go +13 −7 Original line number Diff line number Diff line Loading @@ -144,12 +144,7 @@ func (h *hiddenAPI) hiddenAPIExtractAndEncode(ctx android.ModuleContext, name st return dexJar } // More than one library with the same classes may need to be encoded but only one should be // used as a source of information for hidden API processing otherwise it will result in // duplicate entries in the files. if primary { h.hiddenAPIExtractInformation(ctx, dexJar, implementationJar) } h.hiddenAPIExtractInformation(ctx, dexJar, implementationJar, primary) if !h.annotationsOnly { hiddenAPIJar := android.PathForModuleOut(ctx, "hiddenapi", name+".jar").OutputPath Loading @@ -169,7 +164,18 @@ func (h *hiddenAPI) hiddenAPIExtractAndEncode(ctx android.ModuleContext, name st // // It also makes the dex jar available for use when generating the // hiddenAPISingletonPathsStruct.stubFlags. func (h *hiddenAPI) hiddenAPIExtractInformation(ctx android.ModuleContext, dexJar, classesJar android.Path) { func (h *hiddenAPI) hiddenAPIExtractInformation(ctx android.ModuleContext, dexJar, classesJar android.Path, primary bool) { if !h.active { return } // More than one library with the same classes may need to be encoded but only one should be // used as a source of information for hidden API processing otherwise it will result in // duplicate entries in the files. if !primary { return } stubFlagsCSV := hiddenAPISingletonPaths(ctx).stubFlags flagsCSV := android.PathForModuleOut(ctx, "hiddenapi", "flags.csv") Loading
java/java.go +7 −5 Original line number Diff line number Diff line Loading @@ -2917,6 +2917,9 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.properties.Aidl.Export_include_dirs) if ctx.Device() { configurationName := j.BaseModuleName() primary := j.Prebuilt().UsePrebuilt() // If this is a variant created for a prebuilt_apex then use the dex implementation jar // obtained from the associated deapexer module. ai := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo) Loading @@ -2930,8 +2933,10 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { // Get the path of the dex implementation jar from the `deapexer` module. di := ctx.OtherModuleProvider(deapexerModule, android.DeapexerProvider).(android.DeapexerInfo) j.dexJarFile = di.PrebuiltExportPath(j.BaseModuleName(), ".dexjar") if j.dexJarFile == nil { if dexOutputPath := di.PrebuiltExportPath(j.BaseModuleName(), ".dexjar"); dexOutputPath != nil { j.dexJarFile = dexOutputPath j.hiddenAPI.hiddenAPIExtractInformation(ctx, dexOutputPath, outputFile, primary) } else { // This should never happen as a variant for a prebuilt_apex is only created if the // prebuilt_apex has been configured to export the java library dex file. ctx.ModuleErrorf("internal error: no dex implementation jar available from prebuilt_apex %q", deapexerModule.Name()) Loading Loading @@ -2961,9 +2966,6 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { return } configurationName := j.BaseModuleName() primary := j.Prebuilt().UsePrebuilt() // Hidden API CSV generation and dex encoding dexOutputFile = j.hiddenAPIExtractAndEncode(ctx, configurationName, primary, dexOutputFile, outputFile, proptools.Bool(j.dexProperties.Uncompress_dex)) Loading