1# 2# Copyright (C) 2015 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17# Following libraries contain references to newer platform versions. 18# Don't warn about those in case this app is linking against an older 19# platform version. We know about them, and they are safe. 20-dontwarn android.support.** 21-dontwarn com.ibm.icu.** 22-dontwarn com.google.android.exoplayer.** 23-dontwarn com.android.tv.tuner.** 24-dontwarn com.android.tv.dvr.** 25 26# This is due to legacy API katniss is referencing. Seems safe. 27-dontwarn com.google.android.volley.** 28-dontwarn com.google.android.common.** 29 30-keepclasseswithmembers class com.android.tv.tuner.*DataSource { 31 int readAt(long, byte[], int, int); 32 long getSize(); 33 void close(); 34} 35-keepclasseswithmembers class com.google.android.exoplayer2.ext.ffmpeg { 36 native <methods>; 37} 38 39# Configuration of proguard via annotations. Apply them to 40# the elements of your program not only to ensure correct proguard 41# functionality, but to document non-obvious entry points to your code to make 42# it survive refactorings. 43 44# Annotations are implemented as attributes, so we have to explicitly keep them. 45# Catch all which encompasses attributes like RuntimeVisibleParameterAnnotations 46# and RuntimeVisibleTypeAnnotations 47-keepattributes RuntimeVisible*Annotation* 48 49# JNI is an entry point that's hard to keep track of, so there's 50# an annotation to mark fields and methods used by native code. 51 52# Keep the annotations that proguard needs to process. 53-keep class com.android.tv.common.annotation.UsedBy* 54 55# Just because native code accesses members of a class, does not mean that the 56# class itself needs to be annotated - only annotate classes that are 57# referenced themselves in native code. 58-keep @com.android.tv.common.annotation.UsedBy* class * 59-keepclassmembers class * { 60 @com.android.tv.common.annotation.UsedBy* *; 61} 62 63# For tests 64-keep @android.support.annotation.VisibleForTesting class * {*;} 65-keepclasseswithmembers class * { 66 @android.support.annotation.VisibleForTesting <methods>; 67} 68 69# Grpc used by epg via reflection 70-keep class io.grpc.internal.DnsNameResolverProvider 71 72# Don't warn about checkerframework in Android proguard 73-dontwarn org.checkerframework.** 74