Add temporary restriction on hidden API processing
Hidden API processing of a bootclasspath_fragment requires the fragment provides information, such as dependencies on other fragments and flag files to override the default flags. Failing to do so will cause hidden API generation to either fail or to generate different flags to that generated by the hidden API processing done by platform_bootclasspath which will cause the build to fail. Previously, this was handled by only performing hidden API processing for those modules that provide stub libs and relied on there only being bootclasspath_fragments defined for ART (which already supports hidden API processing), and Conscrypt and I18n neither of which provide stubs. Unfortunately, that can no longer be relied upon due to a couple of recent changes: 1. A java_sdk_library in a bootclasspath_fragment's content property is automatically treated a stub library. That avoids duplication for most bootclasspath_fragments that provide the implementation and stub libraries through the same java_sdk_library. It does not affect either ART, conscrypt or i18n as they all define the implementation separately to the stubs. 2. bootclasspath_fragment modules have been defined for a number of android modules as they are needed for reasons other than hidden API processing. In combination this meant that rules to perform hidden API processing were being created but they were not currently being used which is good because they fail. However, adding the fragment to the platform-bootclasspath will cause those rules to be used as the platform_bootclasspath module performs a consistency check on the hidden API flags generated by each of the fragments to ensure that they are consistent with those it generates itself. The dynamic bootclasspath work will need to add fragments to the platform_bootclasspath and without this change that would be blocked until all fragments had been switched to generating hidden API flags properly. This change adds a new fragments property to the bootclasspath and disables hidden API processing for everything other than ART and tests if the fragments property or stub libs is empty. Bug: 179354495 Test: - Before making this change. - Add com.android.os.statds-bootclasspath-fragment to platform-bootclasspath.fragments m out/soong/hiddenapi/hiddenapi-flags.csv - hidden API processing fails in statsd as it cannot find java.lang.Object. - After making this change, run the above command again and it should pass. Change-Id: Ifbb362f8fcfb2c06595fbd5ae39421b536e329ef
Loading
Please register or sign in to comment