grpc-java/android-interop-testing
Eric Anderson b272f634c1 Disable Gradle Module Metadata resolution
The module metadata in Guava causes the -jre version to be selected even
when you choose the -android version. Gradle did not give any clues that
this was happening, and while
`println(configurations.compileClasspath.resolve())` shows the different
jar in use, most other diagonstics don't. dependencyInsight can show you
this is happening, but only if you know which dependency has a problem
and read Guava's module metadata first to understand the significance of
the results.

You could argue this is a Guava-specific problem. I was able to get
parts of our build working with attributes and resolutionStrategy
configurations mentioned at
https://github.com/google/guava/releases/tag/v32.1.0 , so that only
Guava would be changed. But it was fickle giving poor error messages or
silently swapping back to the -jre version.

Given the weak debuggability, the added complexity, and the lack of
value module metadata is providing us, disabling module metadata for our
entire build seems prudent.

See https://github.com/google/guava/issues/7575
2025-01-03 09:29:31 -08:00
..
src Fix typo in deprecated blocking stub javadoc. (#11772) 2024-12-26 13:31:34 -08:00
README.md android-interop-testing: include android interop testing in main build (#6829) 2020-03-19 12:37:48 -07:00
build.gradle Disable Gradle Module Metadata resolution 2025-01-03 09:29:31 -08:00
proguard-rules.pro Upgrade Android Gradle plugin to 7.4.0 (#9933) 2023-03-08 11:18:27 -08:00
start-emulator.sh Add the Android interop test App. 2015-06-26 15:31:14 -07:00
wait-for-emulator.sh Add the Android interop test App. 2015-06-26 15:31:14 -07:00

README.md

gRPC Android test App

Implements gRPC integration tests in an Android App.

In order to build this app, you need a local.properties file under this directory which specifies the location of your android sdk:

sdk.dir=/somepath/somepath/sdk

Connect your Android device or start the emulator:

$ ./start-emulator.sh <AVD name> & ./wait-for-emulator.sh

Start test server

Start the test server by:

$ ../run-test-server.sh

Manually test

Install the App by:

$ ../gradlew installDebug

Then manually test it with the UI.

Instrumentation tests

Instrumentation tests must be run on a connected device or emulator. Run with the following gradle command:

$ ../gradlew connectedAndroidTest \
    -Pandroid.testInstrumentationRunnerArguments.server_host=10.0.2.2 \
    -Pandroid.testInstrumentationRunnerArguments.server_port=8080 \
    -Pandroid.testInstrumentationRunnerArguments.use_tls=true \
    -Pandroid.testInstrumentationRunnerArguments.server_host_override=foo.test.google.fr \
    -Pandroid.testInstrumentationRunnerArguments.use_test_ca=true \
    -Pandroid.testInstrumentationRunnerArguments.test_case=all