-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