| # Keep class's integer static field for MessageUtils to parsing their name. |
| -keepclassmembers class com.android.server.**,android.net.**,com.android.networkstack.** { |
| static final % POLICY_*; |
| static final % NOTIFY_TYPE_*; |
| static final % TRANSPORT_*; |
| static final % CMD_*; |
| static final % EVENT_*; |
| } |
| |
| -keep class com.android.networkstack.tethering.util.BpfMap { |
| native <methods>; |
| } |
| |
| -keep class com.android.networkstack.tethering.util.TcUtils { |
| native <methods>; |
| } |
| |
| -keep class com.android.networkstack.tethering.util.TetheringUtils { |
| native <methods>; |
| } |
| |
| # Ensure runtime-visible field annotations are kept when using R8 full mode. |
| -keepattributes RuntimeVisibleAnnotations,AnnotationDefault |
| -keep interface com.android.networkstack.tethering.util.Struct$Field { |
| *; |
| } |
| -keepclassmembers public class * extends com.android.networkstack.tethering.util.Struct { |
| *; |
| } |
| |
| # The lite proto runtime uses reflection to access fields based on the names in |
| # the schema, keep all the fields. |
| -keepclassmembers class * extends com.android.networkstack.tethering.protobuf.MessageLite { |
| <fields>; |
| } |