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