tree b6a4696e3a259d1dcebfa3c52080dc5096c10d6b
parent 7e62ba8256178e11615968918013f8db8985fde0
author Paul Duffin <paulduffin@google.com> 1497353339 +0100
committer Paul Duffin <paulduffin@google.com> 1497353339 +0100

Fix dependencies of packages that target earlier releases

A previous change added legacy-android-test as a static dependency to
all packages that build against the current, test_current or
system_current and failed to compile when the junit and android.test
classes were removed from the API. Unfortunately, those changes did not
take into account that some of those packages target earlier API
versions and so will always have the classes available at runtime.

This change replaces those static dependencies with dynamic dependencies
for any package that targets an earlier API version. The file changes
were made automatically by a tool that constructed and then analyzed a
full dependency graph of all the Android Java modules. The individual
changes were checked manually to ensure that the changes matched the
intent. The affected modules were built against an API with the junit
and android.test classes removed. Any issues found during this process
resulted in either the tool being updated to address the issue or a
separate change being made to fix an existing problem with the build. A
sample of the affected packages were run to ensure that they worked as
expected at runtime; no issues were found during testing.

The following change descriptions were generated automatically and so
may be a little repetitive. They are provided to give the reviewer
enough information to check the comments match what has actually been
changed and check the reasoning behind the changes.

* Android.mk
    Added 'junit' to LOCAL_JAVA_LIBRARIES because module LiveTv builds
    against 'LOCAL_SDK_VERSION := system_current' and uses classes from
    package junit (possibly indirectly) so will no longer compile once
    they are removed from the API.

    It was not added to LOCAL_STATIC_JAVA_LIBRARIES because LiveTv's
    manifest file (AndroidManifest.xml) targets API level 23 and uses
    the android.test.runner library which will provide the classes
    dynamically at runtime.

* tests/func/Android.mk
    Added 'legacy-android-test' to LOCAL_JAVA_LIBRARIES because module
    TVFuncTests builds against 'LOCAL_SDK_VERSION := current' and uses
    classes from package android.test (possibly indirectly) so will no
    longer compile once they are removed from the API.

    It was not added to LOCAL_STATIC_JAVA_LIBRARIES because
    TVFuncTests's manifest file (AndroidManifest.xml) targets API level
    23 and uses the android.test.runner library which will provide the
    classes dynamically at runtime.

* tests/jank/Android.mk
    Added 'legacy-android-test' to LOCAL_JAVA_LIBRARIES because module
    TVJankTests builds against 'LOCAL_SDK_VERSION := current' and uses
    classes from package android.test (possibly indirectly) so will no
    longer compile once they are removed from the API.

    It was not added to LOCAL_STATIC_JAVA_LIBRARIES because
    TVJankTests's manifest file (AndroidManifest.xml) targets API level
    23 and uses the android.test.runner library which will provide the
    classes dynamically at runtime.

* tests/unit/Android.mk
    Added 'android.test.mock.sdk' and 'legacy-android-test' to
    LOCAL_JAVA_LIBRARIES because module TVUnitTests builds against
    'LOCAL_SDK_VERSION := system_current' and uses classes from
    packages android.test and android.test.mock (possibly indirectly)
    so will no longer compile once they are removed from the API.

    They were not added to LOCAL_STATIC_JAVA_LIBRARIES because
    TVUnitTests's manifest file (AndroidManifest.xml) targets API level
    23 and uses the android.test.runner library which will provide the
    classes dynamically at runtime.

    Dependency 'android.test.mock.sdk' is used instead of
    'android.test.mock' because module TVUnitTests builds against the
    API not internal jars and so should use libraries that build
    against the API not internal jars.

    A future change will replace the dependency on
    'legacy-android-test', which builds against the internal jars with
    a dependency on 'android.legacy.test' which will build against the
    API.

Bug: 30188076
Test: make checkbuild and ran a sample of tests
Change-Id: Ib64e14d0d20b6f3cc453e0660496fa6526be902d
