-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclassmembers class com.android.cts.verifier.os.FileUtils$FileStatus {
    private <fields>;
}

# ensure we keep public sensor test methods, these are needed at runtime
-keepclassmembers class * extends com.android.cts.verifier.sensors.base.BaseSensorTestActivity {
    public <methods>;
}
-keepclassmembers class * extends android.hardware.cts.SensorTestCase {
    public <methods>;
}

# ensure we keep public Gnss Measurement test methods, these are needed at runtime
-keepclassmembers class * extends com.android.cts.verifier.location.BaseGnssTestActivity {
    public <methods>;
}
-keepclassmembers class * extends android.location.cts.GnssTestCase {
    public <methods>;
}

-keepclasseswithmembers class * extends com.android.cts.verifier.location.LocationModeTestActivity

# keep mockito methods
-keep class org.mockito.** { *; }
-keep interface org.mockito.** { *; }
-keep class com.google.dexmaker.** { *; }
-keep interface com.google.dexmaker.** { *; }

-dontwarn android.hardware.Sensor
-dontwarn android.test.AndroidTestRunner
-dontwarn java.util.concurrent.ConcurrentLinkedDeque
-dontwarn android.cts.util.**
-dontwarn junit.**

# Jack seems less rigorous than proguard when it comes to warning about
# transitive dependencies.
-dontwarn com.android.org.bouncycastle.**
-dontwarn com.android.okhttp.**
-dontwarn org.opencv.**
-dontwarn android.support.test.internal.runner.hidden.ExposedInstrumentationApi

