1 # Copyright (C) 2015 The Android Open Source Project 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 # 15 # Keep enough data for stack traces 16 -renamesourcefileattribute SourceFile 17 -keepattributes SourceFile,LineNumberTable,*Annotation* 18 19 # Keep classes and methods that have the guava @VisibleForTesting annotation 20 -keep @com.google.common.annotations.VisibleForTesting class * 21 -keepclassmembers class * { 22 @com.google.common.annotations.VisibleForTesting *; 23 } 24 25 # Keep methods that have the @VisibleForAnimation annotation 26 -keep interface com.android.messaging.annotation.VisibleForAnimation 27 -keepclassmembers class * { 28 @com.android.messaging.annotation.VisibleForAnimation *; 29 } 30 31 -keep public class * extends android.app.Activity 32 -keep public class * extends android.app.Application 33 -keep public class * extends android.app.Service 34 -keep public class * extends android.content.BroadcastReceiver 35 -keep public class * extends android.content.ContentProvider 36 -keep public class * extends android.app.backup.BackupAgentHelper 37 -keep public class * extends android.preference.Preference 38 -keep public class * extends android.support.v4.app.Fragment 39 -keep public class com.android.vcard.* { *; } 40 41 -keep class android.support.v4.* { *; } 42 -keep class android.support.v4.*.* { *; } 43 -keep class android.support.v7.* { *; } 44 -keep class android.support.v7.*.* { *; } 45 46 # Keep rastermill classes that need to be accessed from native code (JNI) 47 -keep class android.support.rastermill.** { *; } 48 49 # Preserve the name of the getCaller method so it can find itself in the stack trace it generates 50 -keepclassmembers public class com.android.messaging.util.DebugUtils { 51 public static java.lang.StackTraceElement getCaller(...); 52 } 53 54 # Keep the static fields of referenced inner classes of auto-generated R classes, in case we 55 # access those fields by reflection (e.g. EmojiMarkup) 56 -keepclassmembers class **.R$* { 57 public static <fields>; 58 } 59