diff --git a/apex/apex_test.go b/apex/apex_test.go index 49b2b2d4d..dbe918010 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -6227,6 +6227,9 @@ func TestOverrideApex(t *testing.T) { name: "mybootclasspath_fragment", contents: ["bcplib"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -6241,6 +6244,9 @@ func TestOverrideApex(t *testing.T) { name: "override_bootclasspath_fragment", contents: ["override_bcplib"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -7294,6 +7300,9 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg string, preparer androi apex_available: [ "some-non-updatable-apex", ], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -7352,6 +7361,9 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg string, preparer androi apex_available: [ "com.android.art.debug", ], + hidden_api: { + split_packages: ["*"], + }, } apex_key { @@ -8796,6 +8808,9 @@ func TestApexJavaCoverage(t *testing.T) { name: "mybootclasspathfragment", contents: ["mybootclasspathlib"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -9116,6 +9131,9 @@ func TestSdkLibraryCanHaveHigherMinSdkVersion(t *testing.T) { name: "mybootclasspathfragment", contents: ["mybootclasspathlib"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } java_sdk_library { @@ -9216,6 +9234,9 @@ func TestSdkLibraryCanHaveHigherMinSdkVersion(t *testing.T) { name: "mybootclasspathfragment", contents: ["mybootclasspathlib"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } java_sdk_library { @@ -9435,6 +9456,9 @@ func TestApexStrictUpdtabilityLintBcpFragmentDeps(t *testing.T) { name: "mybootclasspathfragment", contents: ["myjavalib"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } java_library { name: "myjavalib", diff --git a/apex/bootclasspath_fragment_test.go b/apex/bootclasspath_fragment_test.go index ce6b7f730..b298dac5d 100644 --- a/apex/bootclasspath_fragment_test.go +++ b/apex/bootclasspath_fragment_test.go @@ -110,6 +110,9 @@ func TestBootclasspathFragments(t *testing.T) { apex_available: [ "com.android.art", ], + hidden_api: { + split_packages: ["*"], + }, } `, ) @@ -209,6 +212,9 @@ func TestBootclasspathFragments_FragmentDependency(t *testing.T) { apex_available: [ "com.android.art", ], + hidden_api: { + split_packages: ["*"], + }, } bootclasspath_fragment { @@ -220,6 +226,9 @@ func TestBootclasspathFragments_FragmentDependency(t *testing.T) { module: "art-bootclasspath-fragment", }, ], + hidden_api: { + split_packages: ["*"], + }, } `, ) @@ -361,6 +370,9 @@ func TestBootclasspathFragmentInArtApex(t *testing.T) { apex_available: [ "com.android.art", ], + hidden_api: { + split_packages: ["*"], + }, } `, contentsInsert(contents)) @@ -853,6 +865,9 @@ func TestBootclasspathFragmentContentsNoName(t *testing.T) { apex_available: [ "myapex", ], + hidden_api: { + split_packages: ["*"], + }, } `) @@ -959,6 +974,9 @@ func TestBootclasspathFragment_HiddenAPIList(t *testing.T) { apex_available: [ "com.android.art", ], + hidden_api: { + split_packages: ["*"], + }, } apex { @@ -1010,6 +1028,9 @@ func TestBootclasspathFragment_HiddenAPIList(t *testing.T) { module: "art-bootclasspath-fragment", }, ], + hidden_api: { + split_packages: ["*"], + }, } `) @@ -1123,6 +1144,9 @@ func TestBootclasspathFragment_AndroidNonUpdatable(t *testing.T) { apex_available: [ "com.android.art", ], + hidden_api: { + split_packages: ["*"], + }, } apex { @@ -1175,6 +1199,9 @@ func TestBootclasspathFragment_AndroidNonUpdatable(t *testing.T) { module: "art-bootclasspath-fragment", }, ], + hidden_api: { + split_packages: ["*"], + }, } `) @@ -1282,6 +1309,9 @@ func TestBootclasspathFragment_AndroidNonUpdatable_AlwaysUsePrebuiltSdks(t *test apex_available: [ "com.android.art", ], + hidden_api: { + split_packages: ["*"], + }, } apex { @@ -1334,6 +1364,9 @@ func TestBootclasspathFragment_AndroidNonUpdatable_AlwaysUsePrebuiltSdks(t *test module: "art-bootclasspath-fragment", }, ], + hidden_api: { + split_packages: ["*"], + }, } `) diff --git a/apex/classpath_element_test.go b/apex/classpath_element_test.go index 60f18bd57..9142eed99 100644 --- a/apex/classpath_element_test.go +++ b/apex/classpath_element_test.go @@ -88,6 +88,9 @@ func TestCreateClasspathElements(t *testing.T) { "baz", "quuz", ], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -134,6 +137,9 @@ func TestCreateClasspathElements(t *testing.T) { contents: [ "bar", ], + hidden_api: { + split_packages: ["*"], + }, } java_library { diff --git a/apex/platform_bootclasspath_test.go b/apex/platform_bootclasspath_test.go index 06c39ee4b..4b48da8e2 100644 --- a/apex/platform_bootclasspath_test.go +++ b/apex/platform_bootclasspath_test.go @@ -125,6 +125,7 @@ func TestPlatformBootclasspath_Fragments(t *testing.T) { unsupported_packages: [ "bar-unsupported-packages.txt", ], + split_packages: ["*"], }, } @@ -274,6 +275,9 @@ func TestPlatformBootclasspathDependencies(t *testing.T) { "baz", "quuz", ], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -317,6 +321,9 @@ func TestPlatformBootclasspathDependencies(t *testing.T) { name: "my-bootclasspath-fragment", contents: ["bar"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } apex_key { @@ -482,6 +489,9 @@ func TestPlatformBootclasspath_AlwaysUsePrebuiltSdks(t *testing.T) { contents: [ "foo", "bar", ], + hidden_api: { + split_packages: ["*"], + }, } prebuilt_bootclasspath_fragment { @@ -599,6 +609,9 @@ func TestPlatformBootclasspath_IncludesRemainingApexJars(t *testing.T) { generate_classpaths_proto: false, contents: ["foo"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -656,6 +669,9 @@ func TestBootJarNotInApex(t *testing.T) { contents: [ "foo", ], + hidden_api: { + split_packages: ["*"], + }, } platform_bootclasspath { @@ -696,6 +712,9 @@ func TestBootFragmentNotInApex(t *testing.T) { bootclasspath_fragment { name: "not-in-apex-fragment", contents: ["foo"], + hidden_api: { + split_packages: ["*"], + }, } platform_bootclasspath { @@ -746,6 +765,9 @@ func TestNonBootJarInFragment(t *testing.T) { name: "apex-fragment", contents: ["foo", "bar"], apex_available:[ "myapex" ], + hidden_api: { + split_packages: ["*"], + }, } platform_bootclasspath { diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 6e9492ad4..b6b179cdf 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -866,11 +866,18 @@ func (b *BootclasspathFragmentModule) produceHiddenAPIOutput(ctx android.ModuleC packagePrefixes := b.sourceOnlyProperties.Hidden_api.Package_prefixes singlePackages := b.sourceOnlyProperties.Hidden_api.Single_packages if splitPackages != nil || packagePrefixes != nil || singlePackages != nil { - if splitPackages == nil { - splitPackages = []string{"*"} - } output.SignaturePatternsPath = buildRuleSignaturePatternsFile( ctx, output.AllFlagsPath, splitPackages, packagePrefixes, singlePackages) + } else if !b.isTestFragment() { + ctx.ModuleErrorf(`Must specify at least one of the split_packages, package_prefixes and single_packages properties + If this is a new bootclasspath_fragment or you are unsure what to do add the + the following to the bootclasspath_fragment: + hidden_api: {split_packages: ["*"]}, + and then run the following: + m analyze_bcpf && analyze_bcpf --bcpf %q + it will analyze the bootclasspath_fragment and provide hints as to what you + should specify here. If you are happy with its suggestions then you can add + the --fix option and it will fix them for you.`, b.BaseModuleName()) } return output diff --git a/java/bootclasspath_fragment_test.go b/java/bootclasspath_fragment_test.go index 8ffe99a77..83beb6d23 100644 --- a/java/bootclasspath_fragment_test.go +++ b/java/bootclasspath_fragment_test.go @@ -121,6 +121,9 @@ func TestBootclasspathFragment_Coverage(t *testing.T) { ], }, }, + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -201,6 +204,9 @@ func TestBootclasspathFragment_StubLibs(t *testing.T) { core_platform_api: { stub_libs: ["mycoreplatform.stubs"], }, + hidden_api: { + split_packages: ["*"], + }, } java_library { diff --git a/sdk/bootclasspath_fragment_sdk_test.go b/sdk/bootclasspath_fragment_sdk_test.go index 7283cf050..13ddbe768 100644 --- a/sdk/bootclasspath_fragment_sdk_test.go +++ b/sdk/bootclasspath_fragment_sdk_test.go @@ -101,6 +101,9 @@ func TestSnapshotWithBootclasspathFragment_ImageName(t *testing.T) { image_name: "art", contents: ["mybootlib"], apex_available: ["com.android.art"], + hidden_api: { + split_packages: ["*"], + }, } apex_key { @@ -223,6 +226,9 @@ func testSnapshotWithBootClasspathFragment_Contents(t *testing.T, sdk string, co // This should be automatically added to the sdk_snapshot as a java_sdk_libs module. stub_libs: ["mycoreplatform"], }, + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -507,6 +513,9 @@ func TestSnapshotWithBootClasspathFragment_Fragments(t *testing.T) { contents: [ "myotherlib", ], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -536,6 +545,9 @@ func TestSnapshotWithBootClasspathFragment_Fragments(t *testing.T) { module: "myotherbootclasspathfragment" }, ], + hidden_api: { + split_packages: ["*"], + }, } java_sdk_library { @@ -615,6 +627,9 @@ func TestBasicSdkWithBootclasspathFragment(t *testing.T) { image_name: "art", contents: ["mybootlib"], apex_available: ["myapex"], + hidden_api: { + split_packages: ["*"], + }, } java_library { @@ -722,6 +737,7 @@ func TestSnapshotWithBootclasspathFragment_HiddenAPI(t *testing.T) { unsupported_packages: [ "my-unsupported-packages.txt", ], + split_packages: ["*"], }, } diff --git a/sdk/sdk_test.go b/sdk/sdk_test.go index e230d5c0b..1ec12c346 100644 --- a/sdk/sdk_test.go +++ b/sdk/sdk_test.go @@ -473,6 +473,9 @@ java_import { name: "mybootclasspathfragment", apex_available: ["myapex"], contents: ["mysdklibrary"], + hidden_api: { + split_packages: ["*"], + }, } java_sdk_library {