From 06c40dccc38647d09add356cf4d3bc15be99c3f2 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Mon, 23 Jan 2017 09:11:09 -0800 Subject: [PATCH] android: Fix ProGuard rules in Android apps Fixes #2207. This is actually a workaround. Ideally users shouldn't need to -keep classes, but it's a bit risky to fix the real issue before 1.1. The further fix will be done as part of #2633. The interop app's build.gradle change is necessary to compile with newer Gradle versions. The com.google.errorprone.annotations was necessary in order to prevent annotation warnings from failing the build. --- android-interop-testing/app/proguard-rules.pro | 4 ++++ android-interop-testing/build.gradle | 2 +- examples/android/helloworld/app/proguard-rules.pro | 4 ++++ examples/android/routeguide/app/proguard-rules.pro | 7 +++++-- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/android-interop-testing/app/proguard-rules.pro b/android-interop-testing/app/proguard-rules.pro index 773fc720df..1c926cf2ce 100644 --- a/android-interop-testing/app/proguard-rules.pro +++ b/android-interop-testing/app/proguard-rules.pro @@ -14,3 +14,7 @@ -dontwarn org.mockito.** -dontwarn sun.reflect.** -dontwarn android.test.** +# Ignores: can't find referenced class javax.lang.model.element.Modifier +-dontwarn com.google.errorprone.annotations.** +-keep class io.grpc.internal.DnsNameResolverProvider +-keep class io.grpc.okhttp.OkHttpChannelProvider diff --git a/android-interop-testing/build.gradle b/android-interop-testing/build.gradle index 182b55e914..6aa55c2e0b 100644 --- a/android-interop-testing/build.gradle +++ b/android-interop-testing/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.5.0' + classpath 'com.android.tools.build:gradle:2.2.0' classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0" // NOTE: Do not place your application dependencies here; they belong diff --git a/examples/android/helloworld/app/proguard-rules.pro b/examples/android/helloworld/app/proguard-rules.pro index 3b2e11a799..6471f5f364 100644 --- a/examples/android/helloworld/app/proguard-rules.pro +++ b/examples/android/helloworld/app/proguard-rules.pro @@ -12,3 +12,7 @@ -dontwarn sun.misc.Unsafe -dontwarn com.google.common.** -dontwarn okio.** +# Ignores: can't find referenced class javax.lang.model.element.Modifier +-dontwarn com.google.errorprone.annotations.** +-keep class io.grpc.internal.DnsNameResolverProvider +-keep class io.grpc.okhttp.OkHttpChannelProvider diff --git a/examples/android/routeguide/app/proguard-rules.pro b/examples/android/routeguide/app/proguard-rules.pro index 34ff0b3a7b..6471f5f364 100644 --- a/examples/android/routeguide/app/proguard-rules.pro +++ b/examples/android/routeguide/app/proguard-rules.pro @@ -1,6 +1,6 @@ # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified -# in /usr/local/google/home/rocking/Android/Sdk/tools/proguard/proguard-android.txt +# in $ANDROID_HOME/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the proguardFiles # directive in build.gradle. # @@ -12,4 +12,7 @@ -dontwarn sun.misc.Unsafe -dontwarn com.google.common.** -dontwarn okio.** - +# Ignores: can't find referenced class javax.lang.model.element.Modifier +-dontwarn com.google.errorprone.annotations.** +-keep class io.grpc.internal.DnsNameResolverProvider +-keep class io.grpc.okhttp.OkHttpChannelProvider