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
This commit is contained in:
Remi NGUYEN VAN
2019-02-14 18:19:14 +09:00
parent 5db454c28d
commit 1b57e8e9db
9 changed files with 34 additions and 6 deletions

View File

@@ -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",

View File

@@ -40,6 +40,7 @@ android_app {
static_libs: [
"NetworkStackLib"
],
jarjar_rules: "jarjar-rules-shared.txt",
manifest: "AndroidManifest.xml",
required: ["NetworkStackPermissionStub"],
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -3,6 +3,7 @@ java_library_static {
srcs: ["java/**/*.java"],
static_libs: [
"netd_aidl_interface-java",
"networkstack-aidl-interfaces-java",
]
}