| plugins { | |
| id "com.android.application" | |
| id "com.google.protobuf" | |
| } | |
| description = 'gRPC: Android Integration Testing' | |
| repositories { | |
| google() | |
| } | |
| android { | |
| namespace = 'io.grpc.android.integrationtest' | |
| sourceSets { | |
| main { | |
| java { | |
| srcDirs += "${projectDir}/../interop-testing/src/main/java/" | |
| setIncludes(["io/grpc/android/integrationtest/**", | |
| "io/grpc/testing/integration/AbstractInteropTest.java", | |
| "io/grpc/testing/integration/TestServiceImpl.java", | |
| "io/grpc/testing/integration/Util.java"]) | |
| } | |
| proto { | |
| srcDirs += "${projectDir}/../interop-testing/src/main/proto/" | |
| } | |
| } | |
| } | |
| compileOptions { | |
| sourceCompatibility JavaVersion.VERSION_1_8 | |
| targetCompatibility JavaVersion.VERSION_1_8 | |
| } | |
| compileSdkVersion 34 | |
| defaultConfig { | |
| applicationId "io.grpc.android.integrationtest" | |
| minSdkVersion 23 | |
| targetSdkVersion 33 | |
| versionCode 1 | |
| versionName "1.0" | |
| testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | |
| } | |
| buildTypes { | |
| debug { minifyEnabled false } | |
| release { | |
| minifyEnabled true | |
| proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | |
| } | |
| } | |
| lintOptions { | |
| disable 'InvalidPackage', 'HardcodedText', 'UsingOnClickInXml', | |
| 'MissingClass' // https://github.com/grpc/grpc-java/issues/8799 | |
| } | |
| packagingOptions { | |
| exclude 'META-INF/INDEX.LIST' | |
| exclude 'META-INF/io.netty.versions.properties' | |
| } | |
| } | |
| dependencies { | |
| implementation 'androidx.appcompat:appcompat:1.3.0' | |
| implementation libraries.androidx.annotation | |
| implementation 'com.google.android.gms:play-services-base:18.0.1' | |
| implementation project(':grpc-android'), | |
| project(':grpc-api'), | |
| project(':grpc-core'), | |
| project(':grpc-census'), | |
| project(':grpc-okhttp'), | |
| project(':grpc-protobuf-lite'), | |
| project(':grpc-stub'), | |
| project(':grpc-testing'), | |
| libraries.junit, | |
| libraries.truth, | |
| libraries.androidx.test.rules, | |
| libraries.androidx.test.core, | |
| libraries.opencensus.contrib.grpc.metrics | |
| implementation (project(':grpc-services')) { | |
| exclude group: 'com.google.protobuf' | |
| exclude group: 'com.google.guava' | |
| } | |
| androidTestImplementation libraries.androidx.test.ext.junit, | |
| libraries.androidx.test.runner | |
| } | |
| // Checkstyle doesn't run automatically with android | |
| task checkStyleMain(type: Checkstyle) { | |
| source 'src/main/java' | |
| include '**/*.java' | |
| classpath = files() | |
| } | |
| task checkStyleTest(type: Checkstyle) { | |
| source 'src/androidTest/java' | |
| include '**/*.java' | |
| classpath = files() | |
| } | |
| project.tasks['check'].dependsOn checkStyleMain, checkStyleTest | |
| import net.ltgt.gradle.errorprone.CheckSeverity | |
| tasks.withType(JavaCompile).configureEach { | |
| options.compilerArgs += [ | |
| "-Xlint:-cast", | |
| ] | |
| appendToProperty(it.options.errorprone.excludedPaths, ".*/R.java", "|") | |
| appendToProperty( | |
| it.options.errorprone.excludedPaths, | |
| ".*/src/generated/.*", | |
| "|") | |
| } | |
| // Workaround error seen with Gradle 8.14.3 and AGP 7.4.1 when building: | |
| // ./gradlew clean :grpc-android-interop-testing:build -PskipAndroid=false \ | |
| // -Pandroid.useAndroidX=true --no-build-cache | |
| // | |
| // Error message: | |
| // | |
| // Execution failed for task ':grpc-android-interop-testing:mergeExtDexDebug'. | |
| // > Could not resolve all files for configuration ':grpc-android-interop-testing:debugRuntimeClasspath'. | |
| // > Failed to transform opencensus-contrib-grpc-metrics-0.31.1.jar (io.opencensus:opencensus-contrib-grpc-metrics:0.31.1) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=23, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}. | |
| // > Could not resolve all files for configuration ':grpc-android-interop-testing:debugRuntimeClasspath'. | |
| // > Failed to transform grpc-api-1.81.0-SNAPSHOT.jar (project :grpc-api) to match attributes {artifactType=android-classes-jar, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.jvm.version=8, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. | |
| // > Execution failed for IdentityTransform: grpc-java/api/build/libs/grpc-api-1.81.0-SNAPSHOT.jar. | |
| // > File/directory does not exist: grpc-java/api/build/libs/grpc-api-1.81.0-SNAPSHOT.jar | |
| tasks.configureEach { task -> | |
| if (task.name.equals("mergeExtDexDebug")) { | |
| dependsOn(':grpc-api:jar') | |
| } | |
| } | |
| afterEvaluate { | |
| // Hack to workaround "Task ':grpc-android-interop-testing:extractIncludeDebugProto' uses this | |
| // output of task ':grpc-context:jar' without declaring an explicit or implicit dependency." The | |
| // issue started when grpc-context became empty. | |
| tasks.named('extractIncludeDebugProto').configure { | |
| dependsOn project(':grpc-context').tasks.named('jar') | |
| } | |
| tasks.named('extractIncludeReleaseProto').configure { | |
| dependsOn project(':grpc-context').tasks.named('jar') | |
| } | |
| } | |
| configureProtoCompilation() |