Jarjar com.google.protobuf
This avoids potential conflicts if the library is also added to the
bootclasspath.
com.google.protobuf is pulled as a dependency when adding protobuffers,
like those used for data stall, IP provisioning and validation metrics.
Bug: 159587267
Test: m; manual: booted, wifi working
Change-Id: I3339e47c1ca1cd8b0186da0dbf880eff245b4c67
diff --git a/Android.bp b/Android.bp
index 6ccbd18..ae19a1c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -91,6 +91,7 @@
"netlink-client",
"networkstack-client",
"net-utils-framework-common",
+ // See note on statsprotos when adding/updating proto build rules
"datastallprotosnano",
"statsprotos",
"captiveportal-lib",
@@ -293,6 +294,8 @@
required: ["NetworkPermissionConfig"],
}
+// When adding or modifying protos, the jarjar rules and possibly proguard rules need
+// to be updated: proto libraries may pull additional static libraries.
java_library_static {
name: "statsprotos",
proto: {
diff --git a/jarjar-rules-shared.txt b/jarjar-rules-shared.txt
index c4f4602..438fc61 100644
--- a/jarjar-rules-shared.txt
+++ b/jarjar-rules-shared.txt
@@ -2,6 +2,7 @@
rule com.android.net.module.util.** com.android.networkstack.util.@1
rule com.android.internal.util.** android.net.networkstack.util.@1
+rule com.google.protobuf.** com.android.networkstack.protobuf.@1
# Classes from net-utils-framework-common
rule com.android.net.module.util.** com.android.networkstack.util.@1
diff --git a/proguard.flags b/proguard.flags
index c60f6c3..af4262a 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -7,3 +7,10 @@
static final int CMD_*;
static final int EVENT_*;
}
+
+# The lite proto runtime uses reflection to access fields based on the names in
+# the schema, keep all the fields.
+# This replicates the base proguard rule used by the build by default
+# (proguard_basic_keeps.flags), but needs to be specified here because the
+# com.google.protobuf package is jarjared to the below package.
+-keepclassmembers class * extends com.android.networkstack.protobuf.MessageLite { <fields>; }