From 1b57e8e9db5b007c19b713e9d1d3b28397a11b52 Mon Sep 17 00:00:00 2001 From: Remi NGUYEN VAN Date: Thu, 14 Feb 2019 18:19:14 +0900 Subject: [PATCH] Fix framework and NetworkStack classes conflicts Classes that are used in framework.jar cannot be linked in NetworkStack, as the framework takes precedence in the classpath. This prevents the networkstack from using these classes due to the hidden API usage detection. Do the following: - jarjar any shared source file between framework and NetworkStack, so the version in the NetworkStack uses a different package. - Move any shared class not used in the NetworkStack to services.net The CL uses jarjar on the app copy and not the framework classes, as the framework cannot be updated without an OTA, and non-network stack specific classes should not be renamed because of the network stack. Test: atest FrameworksNetTests NetworkStackTests Test: flashed svelte build, WiFi works Bug: 124033493 Change-Id: I85d888b756adc28c36638913632bfdfdbf0e0486 --- Android.bp | 13 +++++++++++-- packages/NetworkStack/Android.bp | 1 + packages/NetworkStack/jarjar-rules-shared.txt | 19 +++++++++++++++++++ .../android/net/dhcp/DhcpPacketListener.java | 2 +- .../src/android/net/util}/FdEventsReader.java | 3 +-- .../src/android/net/util/PacketReader.java | 1 - services/net/Android.bp | 1 + .../android/net/dhcp/DhcpServerCallbacks.java | 0 .../android/net/ip/IpClientCallbacks.java | 0 9 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 packages/NetworkStack/jarjar-rules-shared.txt rename {core/java/android/net/shared => packages/NetworkStack/src/android/net/util}/FdEventsReader.java (99%) rename {core => services/net}/java/android/net/dhcp/DhcpServerCallbacks.java (100%) rename {core => services/net}/java/android/net/ip/IpClientCallbacks.java (100%) diff --git a/Android.bp b/Android.bp index 9df0372b91530..fd5be5ab9e91c 100644 --- a/Android.bp +++ b/Android.bp @@ -704,7 +704,7 @@ java_defaults { "android.hardware.vibrator-V1.1-java", "android.hardware.vibrator-V1.2-java", "android.hardware.wifi-V1.0-java-constants", - "networkstack-aidl-interfaces-java", + "networkstack-aidl-framework-java", "netd_aidl_parcelables-java", ], @@ -818,7 +818,6 @@ aidl_interface { "core/java/android/net/DhcpResultsParcelable.aidl", "core/java/android/net/INetworkMonitor.aidl", "core/java/android/net/INetworkMonitorCallbacks.aidl", - "core/java/android/net/IIpMemoryStore.aidl", "core/java/android/net/INetworkStackConnector.aidl", "core/java/android/net/INetworkStackStatusCallback.aidl", "core/java/android/net/InitialConfigurationParcelable.aidl", @@ -837,6 +836,16 @@ aidl_interface { "core/java/android/net/dhcp/IDhcpServerCallbacks.aidl", "core/java/android/net/ip/IIpClient.aidl", "core/java/android/net/ip/IIpClientCallbacks.aidl", + ], + api_dir: "aidl/networkstack", +} + +aidl_interface { + name: "networkstack-aidl-framework", + local_include_dir: "core/java", + srcs: [ + "core/java/android/net/TcpKeepalivePacketDataParcelable.aidl", + "core/java/android/net/IIpMemoryStore.aidl", "core/java/android/net/ipmemorystore/**/*.aidl", ], api_dir: "aidl/networkstack", diff --git a/packages/NetworkStack/Android.bp b/packages/NetworkStack/Android.bp index d6565936c8605..855d5ddcb44d6 100644 --- a/packages/NetworkStack/Android.bp +++ b/packages/NetworkStack/Android.bp @@ -40,6 +40,7 @@ android_app { static_libs: [ "NetworkStackLib" ], + jarjar_rules: "jarjar-rules-shared.txt", manifest: "AndroidManifest.xml", required: ["NetworkStackPermissionStub"], } \ No newline at end of file diff --git a/packages/NetworkStack/jarjar-rules-shared.txt b/packages/NetworkStack/jarjar-rules-shared.txt new file mode 100644 index 0000000000000..a8c712a3336d6 --- /dev/null +++ b/packages/NetworkStack/jarjar-rules-shared.txt @@ -0,0 +1,19 @@ +rule com.android.internal.util.** android.net.networkstack.util.@1 + +rule android.net.shared.Inet4AddressUtils* android.net.networkstack.shared.Inet4AddressUtils@1 +rule android.net.shared.InetAddressUtils* android.net.networkstack.shared.InetAddressUtils@1 + +# Ignore DhcpResultsParcelable, but jarjar DhcpResults +# TODO: move DhcpResults into services.net and delete from here +rule android.net.DhcpResultsParcelable* @0 +rule android.net.DhcpResults* android.net.networkstack.DhcpResults@1 +rule android.net.LocalLog* android.net.networkstack.LocalLog@1 + +# TODO: remove from framework dependencies, then remove here +rule android.net.InterfaceConfigurationParcel* android.net.networkstack.InterfaceConfigurationParcel@1 +rule android.net.TetherStatsParcel* android.net.networkstack.TetherStatsParcel@1 + +# Used by UidRange, which is used by framework classes such as NetworkCapabilities. +rule android.net.UidRangeParcel* android.net.networkstack.UidRangeParcel@1 +# TODO: move TcpKeepalivePacketData to services.net and delete +rule android.net.TcpKeepalivePacketDataParcelable* android.net.networkstack.TcpKeepalivePacketDataParcelable@1 \ No newline at end of file diff --git a/packages/NetworkStack/src/android/net/dhcp/DhcpPacketListener.java b/packages/NetworkStack/src/android/net/dhcp/DhcpPacketListener.java index 96d1a287ef09c..97d26c7c9c1f5 100644 --- a/packages/NetworkStack/src/android/net/dhcp/DhcpPacketListener.java +++ b/packages/NetworkStack/src/android/net/dhcp/DhcpPacketListener.java @@ -18,7 +18,7 @@ package android.net.dhcp; import android.annotation.NonNull; import android.annotation.Nullable; -import android.net.shared.FdEventsReader; +import android.net.util.FdEventsReader; import android.os.Handler; import android.system.Os; diff --git a/core/java/android/net/shared/FdEventsReader.java b/packages/NetworkStack/src/android/net/util/FdEventsReader.java similarity index 99% rename from core/java/android/net/shared/FdEventsReader.java rename to packages/NetworkStack/src/android/net/util/FdEventsReader.java index bffbfb1158861..1380ea720d400 100644 --- a/core/java/android/net/shared/FdEventsReader.java +++ b/packages/NetworkStack/src/android/net/util/FdEventsReader.java @@ -14,14 +14,13 @@ * limitations under the License. */ -package android.net.shared; +package android.net.util; import static android.os.MessageQueue.OnFileDescriptorEventListener.EVENT_ERROR; import static android.os.MessageQueue.OnFileDescriptorEventListener.EVENT_INPUT; import android.annotation.NonNull; import android.annotation.Nullable; -import android.net.util.SocketUtils; import android.os.Handler; import android.os.Looper; import android.os.MessageQueue; diff --git a/packages/NetworkStack/src/android/net/util/PacketReader.java b/packages/NetworkStack/src/android/net/util/PacketReader.java index 94b1e9f2e14eb..4aec6b6753a69 100644 --- a/packages/NetworkStack/src/android/net/util/PacketReader.java +++ b/packages/NetworkStack/src/android/net/util/PacketReader.java @@ -18,7 +18,6 @@ package android.net.util; import static java.lang.Math.max; -import android.net.shared.FdEventsReader; import android.os.Handler; import android.system.Os; diff --git a/services/net/Android.bp b/services/net/Android.bp index 9946cc3db0e8e..8ad4d7679107d 100644 --- a/services/net/Android.bp +++ b/services/net/Android.bp @@ -3,6 +3,7 @@ java_library_static { srcs: ["java/**/*.java"], static_libs: [ "netd_aidl_interface-java", + "networkstack-aidl-interfaces-java", ] } diff --git a/core/java/android/net/dhcp/DhcpServerCallbacks.java b/services/net/java/android/net/dhcp/DhcpServerCallbacks.java similarity index 100% rename from core/java/android/net/dhcp/DhcpServerCallbacks.java rename to services/net/java/android/net/dhcp/DhcpServerCallbacks.java diff --git a/core/java/android/net/ip/IpClientCallbacks.java b/services/net/java/android/net/ip/IpClientCallbacks.java similarity index 100% rename from core/java/android/net/ip/IpClientCallbacks.java rename to services/net/java/android/net/ip/IpClientCallbacks.java