Previously, when a lib that doesn't have sdk_version property set
depends on a java_sdk_library, the impl library was used for linking.
This might be too permissive because the client lib might be using empty
sdk_version because it needed some private APIs from the platform, but
not from the java_sdk_library. This actually happend for some of the CTS
tests. They don't set sdk_version, but were directly depending on
android.test.[base|runner|mock].stubs libraries. If we switch the
references to the stub libraries into the corresponding java_sdk_library
modules (e.g. aandroid.test.[base|runner|mock]), then we would be
allowing private APIs to the CTS tests, which is not good.
To solve this problem, default_to_stub property is introduced. It when set
to true prevents the impl lib from being used for linking. When a module
that doesn't have sdk_version depends on it, the widest API surface that
the java_sdk_library provides is linked instead.
Bug: 157007292
Test: m
Change-Id: Id2acc3cafb71d1e90d4fdc9c0c70a73983355e0f
am skip reason: Change-Id I2b792657b444f0c963e1e92b7c91f6a0cfe1688c with SHA-1 be6e2b6a18 is in history
Change-Id: I951f874f1a8cc3219d8002cccdcf6bb6928df13d
am skip reason: Change-Id I41ba8749ce46da62db402a8b8a555d4874e1cfc0 with SHA-1 5bcff5d1fd is in history
Change-Id: I23aac77d1b3c05e88f1a326d2e73767ff3c817f0
The marked library(ies) were available to the APEX via the
hand-written whitelist in build/soong/apex/apex.go. Trying to remove the
whitelist by adding apex_available property to the Android.bp of the
libraries.
Exempt-From-Owner-Approval: cherry-pick from internal
Bug: 150999716
Test: m
Merged-In: I2b792657b444f0c963e1e92b7c91f6a0cfe1688c
(cherry picked from commit be6e2b6a18)
Change-Id: I2b792657b444f0c963e1e92b7c91f6a0cfe1688c
am skip reason: Change-Id Ifc4799feb4ada9dec8021efc13fe6a953bf2edd3 with SHA-1 5df793011d is in history
Change-Id: Ib4ceb4c23c86fc54f042420641f5a3d5165f0329
am skip reason: Change-Id I1575d9ef3f8596f1eb8db0867db09de08945d711 with SHA-1 6abfbf7f9c is in history
Change-Id: I71c9c0e02d1b274f49a23d41454a53afb69e3c1c
am skip reason: Change-Id I68286bc0caa9daad6ef74db39f7750924f1d93dd with SHA-1 7fe241f623 is in history
Change-Id: Ia34450d2a58647cbd8e1a63f3ea035e10d6e4ec5
I made a mistake and only fixed android_test_import in my previous
change, I5bbb2d2b733bbd6b868898285683ba5ff45be10b.
(This is a cherry-pick change.)
Bug: 154281342
Test: TreeHugger
Test: chromium-webview
Change-Id: I1575d9ef3f8596f1eb8db0867db09de08945d711
Merged-In: I1575d9ef3f8596f1eb8db0867db09de08945d711
am skip reason: Change-Id I4ab7e1a3527fead97a81a5a2cb0e1e93a429117c with SHA-1 849f844252 is in history
Change-Id: Ibcfdcd71cdabc3a3f8f588ead3318f78f08101c2
For an end user hitting these errors, the most likely reason is that
they have mixed up linker and crtbegin_dynamic.o from different builds
in their out tree.
Test: Build a linux_bionic executable in a tree exhibiting b/157549171.
Test: m nothing
Bug: 157549171
Change-Id: I64bee0848ed61226da6654caf3bafb51cf46d923
am skip reason: Change-Id If0c27c1e340c1bdb270064f636dc6bf33a0fc949 with SHA-1 3b70b3fea5 is in history
Change-Id: I98cec1da62b29865b3ca4a3b95452366719a1f4b
Most dependencies on java_sdk_library instances (JSL) simply reference
them by name and rely on the build to pick the correct part, impl,
stubs for a specific scope, headers or implementation jars or dex jars.
Generally, the build gets that decision right. If it does not the for
most of the components of the JSL there is a way to reference them
directly. However, that is not true for the implementation library as
that is created the JSL itself.
Access to the implementation library should be avoided as it opens up
the possibility that use will be made of an API that is not tracked and
maintained which could lead to compatibility issues. However, there is
a case where use of the implementation library is required and safe.
That is when it is being used from other libraries within the same APEX
as the JSL. In that case the JSL and its dependencies will be updated
together so compatibility is not an issue.
This change adds a new <module>.impl java_library that compiles the
implementation library in the same way as the JSL itself does. This will
allow the modules that are blocked from converting to JSL because of
this limitation to progress. Initially the library is only for use
for compiling but follow up changes will switch the rest of the build
from using the implementation library created by JSL to the separate
module.
It also adds the ability to give the separate .impl library a more
restrictive visibility than the JSL further limiting misuse.
Bug: 156618935
Test: m droid, flash, atest CtsProviderTestCases - sniff test
tested that it fixes compilation issues with mainline module
Merged-In: Ifc4799feb4ada9dec8021efc13fe6a953bf2edd3
Change-Id: Ifc4799feb4ada9dec8021efc13fe6a953bf2edd3
(cherry picked from commit 5df793011d)
Introduce a singleton apex rule to merge contents of individual
deps-info results into a single output file.
Bug: 149622332
Test: m
Change-Id: I4ab7e1a3527fead97a81a5a2cb0e1e93a429117c
Merged-In: I4ab7e1a3527fead97a81a5a2cb0e1e93a429117c
Exempt-From-Owner-Approval: cp from aosp
(cherry picked from commit 849f844252)
For java.AndroidApp app, app.MinSdkVersion() was selected from
ApexBundleDepsInfo, not from java.Module.
This caused app.MinSdkVersion() to return "" always.
Besides, having two embeded fields and relying on depth to choose one of
them makes it hard to read.
Bug: 156537348
Test: m
Merged-In: Ib525b2f5132c596db8e33492d0a565ea23e91d1c
Change-Id: Ib525b2f5132c596db8e33492d0a565ea23e91d1c
Exempt-From-Owner-Approval: cp from aosp
(cherry picked from commit 98d63e1cc7)