| # |
| # Copyright (C) 2015 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| # Following libraries contain references to newer platform versions. |
| # Don't warn about those in case this app is linking against an older |
| # platform version. We know about them, and they are safe. |
| -dontwarn android.support.** |
| -dontwarn com.ibm.icu.** |
| -dontwarn com.google.android.exoplayer.** |
| -dontwarn com.android.tv.tuner.** |
| -dontwarn com.android.tv.dvr.** |
| |
| # This is due to legacy API katniss is referencing. Seems safe. |
| -dontwarn com.google.android.volley.** |
| -dontwarn com.google.android.common.** |
| |
| -keepclasseswithmembers class com.android.tv.tuner.*DataSource { |
| int readAt(long, byte[], int, int); |
| long getSize(); |
| void close(); |
| } |
| -keepclasseswithmembers class com.google.android.exoplayer2.ext.ffmpeg { |
| native <methods>; |
| } |
| |
| # Configuration of proguard via annotations. Apply them to |
| # the elements of your program not only to ensure correct proguard |
| # functionality, but to document non-obvious entry points to your code to make |
| # it survive refactorings. |
| |
| # Annotations are implemented as attributes, so we have to explicitly keep them. |
| # Catch all which encompasses attributes like RuntimeVisibleParameterAnnotations |
| # and RuntimeVisibleTypeAnnotations |
| -keepattributes RuntimeVisible*Annotation* |
| |
| # JNI is an entry point that's hard to keep track of, so there's |
| # an annotation to mark fields and methods used by native code. |
| |
| # Keep the annotations that proguard needs to process. |
| -keep class com.android.tv.common.annotation.UsedBy* |
| |
| # Just because native code accesses members of a class, does not mean that the |
| # class itself needs to be annotated - only annotate classes that are |
| # referenced themselves in native code. |
| -keep @com.android.tv.common.annotation.UsedBy* class * |
| -keepclassmembers class * { |
| @com.android.tv.common.annotation.UsedBy* *; |
| } |
| |
| # For tests |
| -keep @android.support.annotation.VisibleForTesting class * {*;} |
| -keepclasseswithmembers class * { |
| @android.support.annotation.VisibleForTesting <methods>; |
| } |
| |
| # Grpc used by epg via reflection |
| -keep class io.grpc.internal.DnsNameResolverProvider |
| |
| # Don't warn about checkerframework in Android proguard |
| -dontwarn org.checkerframework.** |