Use jarjar rule generator for connectivity rules
(This rolls forward part of a previous change, now that jarjar was fixed to not get very slow when the number of rules increases). Autogenerate connectivity jarjar rules at build time, to avoid issues with forgotten jarjar rules or hard-to-diagnose errors introduced by incorrect rules. This change causes all classes in framework-connectivity(-t) and service-connectivity to be jarjared into android.net.connectivity, but still avoids jarjaring classes in com.android.server as before, to keep it small. For many classes this differs from the original jarjar rule. Notes on implementation: - connectivity-jarjar-rules now has a subset framework-connectivity-jarjar-rules containing only the rules necessary for framework-connectivity. This is necessary because framework-connectivity cannot depend on rules generated based on service-connectivity, as there would be a dependency cycle (service-connectivity depends on framework-connectivity); Soong even crashes with a stack overflow. - framework-wifi.stubs.module_lib is added to framework-connectivity-pre-jarjar as it is necessary to build it (it is already in impl_only_libs in the defaults). It is unclear why framework-connectivity-pre-jarjar could build before that (possibly because it was only used as "lib" ?) - Fix package-private visibility; for example NattSocketKeepalive, TcpSocketKeepalive are not API so should be jarjared, but are used by ConnectivityManager which is not jarjared, so they are not in the same package after the change. Package-private members in the former 2 need to be public to be accessible. Changes in this commit are all that is needed, as demonstrated by followup commits that move the classes to a different package without further changes, and that enforce that no class in an API package gets jarjared. - framework-connectivity-internal-test-defaults is separated from framework-connectivity-test-defaults, for unit tests that need to access internal jarjared classes. Such tests need to use the jarjar rules themselves too, so this is only appropriate for connectivity internal unit tests. Test: atest ConnectivityCoverageTests CtsNetTestCases Bug: 217129444 Change-Id: Ib1bd939b71c0171d945fc01b96195d2f620ff13b
This commit is contained in:
@@ -122,6 +122,12 @@ android_app_certificate {
|
||||
certificate: "com.android.tethering",
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "connectivity-hiddenapi-files",
|
||||
srcs: ["hiddenapi/*.txt"],
|
||||
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
||||
}
|
||||
|
||||
// Encapsulate the contributions made by the com.android.tethering to the bootclasspath.
|
||||
bootclasspath_fragment {
|
||||
name: "com.android.tethering-bootclasspath-fragment",
|
||||
|
||||
@@ -103,7 +103,7 @@ java_sdk_library {
|
||||
// Do not add static_libs to this library: put them in framework-connectivity instead.
|
||||
// The jarjar rules are only so that references to jarjared utils in
|
||||
// framework-connectivity-pre-jarjar match at runtime.
|
||||
jarjar_rules: ":connectivity-jarjar-rules",
|
||||
jarjar_rules: ":framework-connectivity-jarjar-rules",
|
||||
permitted_packages: [
|
||||
"android.app.usage",
|
||||
"android.net",
|
||||
|
||||
@@ -112,6 +112,7 @@ java_library {
|
||||
// because the tethering stubs depend on the connectivity stubs (e.g.,
|
||||
// TetheringRequest depends on LinkAddress).
|
||||
"framework-tethering.stubs.module_lib",
|
||||
"framework-wifi.stubs.module_lib",
|
||||
],
|
||||
visibility: ["//packages/modules/Connectivity:__subpackages__"]
|
||||
}
|
||||
@@ -120,7 +121,7 @@ java_sdk_library {
|
||||
name: "framework-connectivity",
|
||||
defaults: ["framework-connectivity-defaults"],
|
||||
installable: true,
|
||||
jarjar_rules: ":connectivity-jarjar-rules",
|
||||
jarjar_rules: ":framework-connectivity-jarjar-rules",
|
||||
permitted_packages: ["android.net"],
|
||||
impl_library_visibility: [
|
||||
"//packages/modules/Connectivity/Tethering/apex",
|
||||
@@ -211,3 +212,33 @@ java_library {
|
||||
"com.android.tethering",
|
||||
],
|
||||
}
|
||||
|
||||
java_genrule {
|
||||
name: "framework-connectivity-jarjar-rules",
|
||||
tool_files: [
|
||||
":connectivity-hiddenapi-files",
|
||||
":framework-connectivity-pre-jarjar{.jar}",
|
||||
":framework-connectivity-t-pre-jarjar{.jar}",
|
||||
":framework-connectivity.stubs.module_lib{.jar}",
|
||||
":framework-connectivity-t.stubs.module_lib{.jar}",
|
||||
"jarjar-excludes.txt",
|
||||
],
|
||||
tools: [
|
||||
"jarjar-rules-generator",
|
||||
],
|
||||
out: ["framework_connectivity_jarjar_rules.txt"],
|
||||
cmd: "$(location jarjar-rules-generator) " +
|
||||
"--jars $(location :framework-connectivity-pre-jarjar{.jar}) " +
|
||||
"$(location :framework-connectivity-t-pre-jarjar{.jar}) " +
|
||||
"--prefix android.net.connectivity " +
|
||||
"--apistubs $(location :framework-connectivity.stubs.module_lib{.jar}) " +
|
||||
"$(location :framework-connectivity-t.stubs.module_lib{.jar}) " +
|
||||
"--unsupportedapi $(locations :connectivity-hiddenapi-files) " +
|
||||
"--excludes $(location jarjar-excludes.txt) " +
|
||||
"--output $(out)",
|
||||
visibility: [
|
||||
"//packages/modules/Connectivity/framework:__subpackages__",
|
||||
"//packages/modules/Connectivity/framework-t:__subpackages__",
|
||||
"//packages/modules/Connectivity/service",
|
||||
],
|
||||
}
|
||||
|
||||
@@ -232,7 +232,8 @@ static jobject android_net_utils_getTcpRepairWindow(JNIEnv *env, jobject thiz, j
|
||||
return NULL;
|
||||
}
|
||||
|
||||
jclass class_TcpRepairWindow = env->FindClass("android/net/TcpRepairWindow");
|
||||
jclass class_TcpRepairWindow = env->FindClass(
|
||||
"android/net/connectivity/android/net/TcpRepairWindow");
|
||||
jmethodID ctor = env->GetMethodID(class_TcpRepairWindow, "<init>", "(IIIIII)V");
|
||||
|
||||
return env->NewObject(class_TcpRepairWindow, ctor, trw.snd_wl1, trw.snd_wnd, trw.max_window,
|
||||
@@ -253,7 +254,7 @@ static const JNINativeMethod gNetworkUtilMethods[] = {
|
||||
{ "bindSocketToNetworkHandle", "(Ljava/io/FileDescriptor;J)I", (void*) android_net_utils_bindSocketToNetworkHandle },
|
||||
{ "attachDropAllBPFFilter", "(Ljava/io/FileDescriptor;)V", (void*) android_net_utils_attachDropAllBPFFilter },
|
||||
{ "detachBPFFilter", "(Ljava/io/FileDescriptor;)V", (void*) android_net_utils_detachBPFFilter },
|
||||
{ "getTcpRepairWindow", "(Ljava/io/FileDescriptor;)Landroid/net/TcpRepairWindow;", (void*) android_net_utils_getTcpRepairWindow },
|
||||
{ "getTcpRepairWindow", "(Ljava/io/FileDescriptor;)Landroid/net/connectivity/android/net/TcpRepairWindow;", (void*) android_net_utils_getTcpRepairWindow },
|
||||
{ "resNetworkSend", "(J[BII)Ljava/io/FileDescriptor;", (void*) android_net_utils_resNetworkSend },
|
||||
{ "resNetworkQuery", "(JLjava/lang/String;III)Ljava/io/FileDescriptor;", (void*) android_net_utils_resNetworkQuery },
|
||||
{ "resNetworkResult", "(Ljava/io/FileDescriptor;)Landroid/net/DnsResolver$DnsResponse;", (void*) android_net_utils_resNetworkResult },
|
||||
|
||||
@@ -29,7 +29,7 @@ public class DnsResolverServiceManager {
|
||||
|
||||
private final IBinder mResolver;
|
||||
|
||||
DnsResolverServiceManager(IBinder resolver) {
|
||||
public DnsResolverServiceManager(IBinder resolver) {
|
||||
mResolver = resolver;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ public final class NattSocketKeepalive extends SocketKeepalive {
|
||||
@NonNull private final InetAddress mDestination;
|
||||
private final int mResourceId;
|
||||
|
||||
NattSocketKeepalive(@NonNull IConnectivityManager service,
|
||||
public NattSocketKeepalive(@NonNull IConnectivityManager service,
|
||||
@NonNull Network network,
|
||||
@NonNull ParcelFileDescriptor pfd,
|
||||
int resourceId,
|
||||
@@ -48,7 +48,7 @@ public final class NattSocketKeepalive extends SocketKeepalive {
|
||||
}
|
||||
|
||||
@Override
|
||||
void startImpl(int intervalSec) {
|
||||
protected void startImpl(int intervalSec) {
|
||||
mExecutor.execute(() -> {
|
||||
try {
|
||||
mService.startNattKeepaliveWithFd(mNetwork, mPfd, mResourceId,
|
||||
@@ -62,7 +62,7 @@ public final class NattSocketKeepalive extends SocketKeepalive {
|
||||
}
|
||||
|
||||
@Override
|
||||
void stopImpl() {
|
||||
protected void stopImpl() {
|
||||
mExecutor.execute(() -> {
|
||||
try {
|
||||
if (mSlot != null) {
|
||||
|
||||
@@ -35,7 +35,7 @@ import java.util.concurrent.Executor;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
class QosCallbackConnection extends android.net.IQosCallback.Stub {
|
||||
public class QosCallbackConnection extends android.net.IQosCallback.Stub {
|
||||
|
||||
@NonNull private final ConnectivityManager mConnectivityManager;
|
||||
@Nullable private volatile QosCallback mCallback;
|
||||
@@ -56,7 +56,7 @@ class QosCallbackConnection extends android.net.IQosCallback.Stub {
|
||||
* {@link Executor} must run callback sequentially, otherwise the order of
|
||||
* callbacks cannot be guaranteed.
|
||||
*/
|
||||
QosCallbackConnection(@NonNull final ConnectivityManager connectivityManager,
|
||||
public QosCallbackConnection(@NonNull final ConnectivityManager connectivityManager,
|
||||
@NonNull final QosCallback callback,
|
||||
@NonNull final Executor executor) {
|
||||
mConnectivityManager = Objects.requireNonNull(connectivityManager,
|
||||
@@ -142,7 +142,7 @@ class QosCallbackConnection extends android.net.IQosCallback.Stub {
|
||||
* There are no synchronization guarantees on exactly when the callback will stop receiving
|
||||
* messages.
|
||||
*/
|
||||
void stopReceivingMessages() {
|
||||
public void stopReceivingMessages() {
|
||||
mCallback = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ public final class QosCallbackException extends Exception {
|
||||
* {@hide}
|
||||
*/
|
||||
@NonNull
|
||||
static QosCallbackException createException(@ExceptionType final int type) {
|
||||
public static QosCallbackException createException(@ExceptionType final int type) {
|
||||
switch (type) {
|
||||
case EX_TYPE_FILTER_NETWORK_RELEASED:
|
||||
return new QosCallbackException(new NetworkReleasedException());
|
||||
|
||||
@@ -33,13 +33,15 @@ import java.net.InetAddress;
|
||||
@SystemApi
|
||||
public abstract class QosFilter {
|
||||
|
||||
/**
|
||||
* The constructor is kept hidden from outside this package to ensure that all derived types
|
||||
* are known and properly handled when being passed to and from {@link NetworkAgent}.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
QosFilter() {
|
||||
/** @hide */
|
||||
protected QosFilter() {
|
||||
// Ensure that all derived types are known, and known to be properly handled when being
|
||||
// passed to and from NetworkAgent.
|
||||
// For now the only known derived type is QosSocketFilter.
|
||||
if (!(this instanceof QosSocketFilter)) {
|
||||
throw new UnsupportedOperationException(
|
||||
"Unsupported QosFilter type: " + this.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -73,9 +73,10 @@ public final class QosSocketInfo implements Parcelable {
|
||||
* The parcel file descriptor wrapped around the socket's file descriptor.
|
||||
*
|
||||
* @return the parcel file descriptor of the socket
|
||||
* @hide
|
||||
*/
|
||||
@NonNull
|
||||
ParcelFileDescriptor getParcelFileDescriptor() {
|
||||
public ParcelFileDescriptor getParcelFileDescriptor() {
|
||||
return mParcelFileDescriptor;
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,8 @@ import java.util.concurrent.Executor;
|
||||
* request. If it does, it MUST support at least 3 concurrent keepalive slots.
|
||||
*/
|
||||
public abstract class SocketKeepalive implements AutoCloseable {
|
||||
static final String TAG = "SocketKeepalive";
|
||||
/** @hide */
|
||||
protected static final String TAG = "SocketKeepalive";
|
||||
|
||||
/**
|
||||
* Success. It indicates there is no error.
|
||||
@@ -215,15 +216,22 @@ public abstract class SocketKeepalive implements AutoCloseable {
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull final IConnectivityManager mService;
|
||||
@NonNull final Network mNetwork;
|
||||
@NonNull final ParcelFileDescriptor mPfd;
|
||||
@NonNull final Executor mExecutor;
|
||||
@NonNull final ISocketKeepaliveCallback mCallback;
|
||||
/** @hide */
|
||||
@NonNull protected final IConnectivityManager mService;
|
||||
/** @hide */
|
||||
@NonNull protected final Network mNetwork;
|
||||
/** @hide */
|
||||
@NonNull protected final ParcelFileDescriptor mPfd;
|
||||
/** @hide */
|
||||
@NonNull protected final Executor mExecutor;
|
||||
/** @hide */
|
||||
@NonNull protected final ISocketKeepaliveCallback mCallback;
|
||||
// TODO: remove slot since mCallback could be used to identify which keepalive to stop.
|
||||
@Nullable Integer mSlot;
|
||||
/** @hide */
|
||||
@Nullable protected Integer mSlot;
|
||||
|
||||
SocketKeepalive(@NonNull IConnectivityManager service, @NonNull Network network,
|
||||
/** @hide */
|
||||
public SocketKeepalive(@NonNull IConnectivityManager service, @NonNull Network network,
|
||||
@NonNull ParcelFileDescriptor pfd,
|
||||
@NonNull Executor executor, @NonNull Callback callback) {
|
||||
mService = service;
|
||||
@@ -303,7 +311,8 @@ public abstract class SocketKeepalive implements AutoCloseable {
|
||||
startImpl(intervalSec);
|
||||
}
|
||||
|
||||
abstract void startImpl(int intervalSec);
|
||||
/** @hide */
|
||||
protected abstract void startImpl(int intervalSec);
|
||||
|
||||
/**
|
||||
* Requests that keepalive be stopped. The application must wait for {@link Callback#onStopped}
|
||||
@@ -313,7 +322,8 @@ public abstract class SocketKeepalive implements AutoCloseable {
|
||||
stopImpl();
|
||||
}
|
||||
|
||||
abstract void stopImpl();
|
||||
/** @hide */
|
||||
protected abstract void stopImpl();
|
||||
|
||||
/**
|
||||
* Deactivate this {@link SocketKeepalive} and free allocated resources. The instance won't be
|
||||
|
||||
@@ -24,9 +24,9 @@ import android.util.Log;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/** @hide */
|
||||
final class TcpSocketKeepalive extends SocketKeepalive {
|
||||
public final class TcpSocketKeepalive extends SocketKeepalive {
|
||||
|
||||
TcpSocketKeepalive(@NonNull IConnectivityManager service,
|
||||
public TcpSocketKeepalive(@NonNull IConnectivityManager service,
|
||||
@NonNull Network network,
|
||||
@NonNull ParcelFileDescriptor pfd,
|
||||
@NonNull Executor executor,
|
||||
@@ -50,7 +50,7 @@ final class TcpSocketKeepalive extends SocketKeepalive {
|
||||
* acknowledgement.
|
||||
*/
|
||||
@Override
|
||||
void startImpl(int intervalSec) {
|
||||
protected void startImpl(int intervalSec) {
|
||||
mExecutor.execute(() -> {
|
||||
try {
|
||||
mService.startTcpKeepalive(mNetwork, mPfd, intervalSec, mCallback);
|
||||
@@ -62,7 +62,7 @@ final class TcpSocketKeepalive extends SocketKeepalive {
|
||||
}
|
||||
|
||||
@Override
|
||||
void stopImpl() {
|
||||
protected void stopImpl() {
|
||||
mExecutor.execute(() -> {
|
||||
try {
|
||||
if (mSlot != null) {
|
||||
|
||||
@@ -261,9 +261,15 @@ java_library {
|
||||
installable: true,
|
||||
}
|
||||
|
||||
filegroup {
|
||||
genrule {
|
||||
name: "connectivity-jarjar-rules",
|
||||
srcs: ["jarjar-rules.txt"],
|
||||
defaults: ["jarjar-rules-combine-defaults"],
|
||||
srcs: [
|
||||
":framework-connectivity-jarjar-rules",
|
||||
":service-connectivity-jarjar-gen",
|
||||
":service-nearby-jarjar-gen",
|
||||
],
|
||||
out: ["connectivity-jarjar-rules.txt"],
|
||||
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
||||
}
|
||||
|
||||
@@ -274,3 +280,41 @@ filegroup {
|
||||
srcs: ["src/com/android/server/BpfNetMaps.java"],
|
||||
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
||||
}
|
||||
|
||||
java_genrule {
|
||||
name: "service-connectivity-jarjar-gen",
|
||||
tool_files: [
|
||||
":service-connectivity-pre-jarjar{.jar}",
|
||||
":service-connectivity-tiramisu-pre-jarjar{.jar}",
|
||||
"jarjar-excludes.txt",
|
||||
],
|
||||
tools: [
|
||||
"jarjar-rules-generator",
|
||||
],
|
||||
out: ["service_connectivity_jarjar_rules.txt"],
|
||||
cmd: "$(location jarjar-rules-generator) " +
|
||||
"--jars $(location :service-connectivity-pre-jarjar{.jar}) " +
|
||||
"$(location :service-connectivity-tiramisu-pre-jarjar{.jar}) " +
|
||||
"--prefix android.net.connectivity " +
|
||||
"--excludes $(location jarjar-excludes.txt) " +
|
||||
"--output $(out)",
|
||||
visibility: ["//visibility:private"],
|
||||
}
|
||||
|
||||
java_genrule {
|
||||
name: "service-nearby-jarjar-gen",
|
||||
tool_files: [
|
||||
":service-nearby-pre-jarjar{.jar}",
|
||||
"jarjar-excludes.txt",
|
||||
],
|
||||
tools: [
|
||||
"jarjar-rules-generator",
|
||||
],
|
||||
out: ["service_nearby_jarjar_rules.txt"],
|
||||
cmd: "$(location jarjar-rules-generator) " +
|
||||
"--jars $(location :service-nearby-pre-jarjar{.jar}) " +
|
||||
"--prefix com.android.server.nearby " +
|
||||
"--excludes $(location jarjar-excludes.txt) " +
|
||||
"--output $(out)",
|
||||
visibility: ["//visibility:private"],
|
||||
}
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
# Classes in framework-connectivity are restricted to the android.net package.
|
||||
# This cannot be changed because it is harcoded in ART in S.
|
||||
# Any missing jarjar rule for framework-connectivity would be caught by the
|
||||
# build as an unexpected class outside of the android.net package.
|
||||
rule com.android.net.module.util.** android.net.connectivity.@0
|
||||
rule com.android.modules.utils.** android.net.connectivity.@0
|
||||
rule android.net.NetworkFactory* android.net.connectivity.@0
|
||||
|
||||
# From modules-utils-preconditions
|
||||
rule com.android.internal.util.Preconditions* android.net.connectivity.@0
|
||||
|
||||
# From framework-connectivity-shared-srcs
|
||||
rule android.util.LocalLog* android.net.connectivity.@0
|
||||
rule android.util.IndentingPrintWriter* android.net.connectivity.@0
|
||||
rule com.android.internal.util.IndentingPrintWriter* android.net.connectivity.@0
|
||||
rule com.android.internal.util.MessageUtils* android.net.connectivity.@0
|
||||
rule com.android.internal.util.WakeupMessage* android.net.connectivity.@0
|
||||
rule com.android.internal.util.FileRotator* android.net.connectivity.@0
|
||||
rule com.android.internal.util.ProcFileReader* android.net.connectivity.@0
|
||||
|
||||
# From framework-connectivity-protos
|
||||
rule com.google.protobuf.** android.net.connectivity.@0
|
||||
rule android.service.** android.net.connectivity.@0
|
||||
|
||||
rule android.sysprop.** com.android.connectivity.@0
|
||||
|
||||
rule com.android.internal.messages.** com.android.connectivity.@0
|
||||
|
||||
# From dnsresolver_aidl_interface (newer AIDLs should go to android.net.resolv.aidl)
|
||||
rule android.net.resolv.aidl.** com.android.connectivity.@0
|
||||
rule android.net.IDnsResolver* com.android.connectivity.@0
|
||||
rule android.net.ResolverHostsParcel* com.android.connectivity.@0
|
||||
rule android.net.ResolverOptionsParcel* com.android.connectivity.@0
|
||||
rule android.net.ResolverParamsParcel* com.android.connectivity.@0
|
||||
rule android.net.ResolverParamsParcel* com.android.connectivity.@0
|
||||
# Also includes netd event listener AIDL, but this is handled by netd-client rules
|
||||
|
||||
# From netd-client (newer AIDLs should go to android.net.netd.aidl)
|
||||
rule android.net.netd.aidl.** com.android.connectivity.@0
|
||||
# Avoid including android.net.INetdEventCallback, used in tests but not part of the module
|
||||
rule android.net.INetd com.android.connectivity.@0
|
||||
rule android.net.INetd$* com.android.connectivity.@0
|
||||
rule android.net.INetdUnsolicitedEventListener* com.android.connectivity.@0
|
||||
rule android.net.InterfaceConfigurationParcel* com.android.connectivity.@0
|
||||
rule android.net.MarkMaskParcel* com.android.connectivity.@0
|
||||
rule android.net.NativeNetworkConfig* com.android.connectivity.@0
|
||||
rule android.net.NativeNetworkType* com.android.connectivity.@0
|
||||
rule android.net.NativeVpnType* com.android.connectivity.@0
|
||||
rule android.net.RouteInfoParcel* com.android.connectivity.@0
|
||||
rule android.net.TetherConfigParcel* com.android.connectivity.@0
|
||||
rule android.net.TetherOffloadRuleParcel* com.android.connectivity.@0
|
||||
rule android.net.TetherStatsParcel* com.android.connectivity.@0
|
||||
rule android.net.UidRangeParcel* com.android.connectivity.@0
|
||||
rule android.net.metrics.INetdEventListener* com.android.connectivity.@0
|
||||
|
||||
# From netlink-client
|
||||
rule android.net.netlink.** com.android.connectivity.@0
|
||||
|
||||
# From networkstack-client (newer AIDLs should go to android.net.[networkstack|ipmemorystore].aidl)
|
||||
rule android.net.networkstack.aidl.** com.android.connectivity.@0
|
||||
rule android.net.ipmemorystore.aidl.** com.android.connectivity.@0
|
||||
rule android.net.ipmemorystore.aidl.** com.android.connectivity.@0
|
||||
rule android.net.DataStallReportParcelable* com.android.connectivity.@0
|
||||
rule android.net.DhcpResultsParcelable* com.android.connectivity.@0
|
||||
rule android.net.IIpMemoryStore* com.android.connectivity.@0
|
||||
rule android.net.INetworkMonitor* com.android.connectivity.@0
|
||||
rule android.net.INetworkStackConnector* com.android.connectivity.@0
|
||||
rule android.net.INetworkStackStatusCallback* com.android.connectivity.@0
|
||||
rule android.net.InformationElementParcelable* com.android.connectivity.@0
|
||||
rule android.net.InitialConfigurationParcelable* com.android.connectivity.@0
|
||||
rule android.net.IpMemoryStore* com.android.connectivity.@0
|
||||
rule android.net.Layer2InformationParcelable* com.android.connectivity.@0
|
||||
rule android.net.Layer2PacketParcelable* com.android.connectivity.@0
|
||||
rule android.net.NattKeepalivePacketDataParcelable* com.android.connectivity.@0
|
||||
rule android.net.NetworkMonitorManager* com.android.connectivity.@0
|
||||
rule android.net.NetworkTestResultParcelable* com.android.connectivity.@0
|
||||
rule android.net.PrivateDnsConfigParcel* com.android.connectivity.@0
|
||||
rule android.net.ProvisioningConfigurationParcelable* com.android.connectivity.@0
|
||||
rule android.net.ScanResultInfoParcelable* com.android.connectivity.@0
|
||||
rule android.net.TcpKeepalivePacketDataParcelable* com.android.connectivity.@0
|
||||
rule android.net.dhcp.DhcpLeaseParcelable* com.android.connectivity.@0
|
||||
rule android.net.dhcp.DhcpServingParamsParcel* com.android.connectivity.@0
|
||||
rule android.net.dhcp.IDhcpEventCallbacks* com.android.connectivity.@0
|
||||
rule android.net.dhcp.IDhcpServer* com.android.connectivity.@0
|
||||
rule android.net.ip.IIpClient* com.android.connectivity.@0
|
||||
rule android.net.ip.IpClientCallbacks* com.android.connectivity.@0
|
||||
rule android.net.ip.IpClientManager* com.android.connectivity.@0
|
||||
rule android.net.ip.IpClientUtil* com.android.connectivity.@0
|
||||
rule android.net.ipmemorystore.** com.android.connectivity.@0
|
||||
rule android.net.networkstack.** com.android.connectivity.@0
|
||||
rule android.net.shared.** com.android.connectivity.@0
|
||||
rule android.net.util.KeepalivePacketDataUtil* com.android.connectivity.@0
|
||||
|
||||
# From connectivity-module-utils
|
||||
rule android.net.shared.** com.android.connectivity.@0
|
||||
|
||||
# From services-connectivity-shared-srcs
|
||||
rule android.net.util.NetworkConstants* com.android.connectivity.@0
|
||||
|
||||
# From modules-utils-statemachine
|
||||
rule com.android.internal.util.IState* com.android.connectivity.@0
|
||||
rule com.android.internal.util.State* com.android.connectivity.@0
|
||||
|
||||
# From the API shims
|
||||
rule com.android.networkstack.apishim.** com.android.connectivity.@0
|
||||
|
||||
# From filegroup framework-connectivity-protos
|
||||
rule android.service.*Proto com.android.connectivity.@0
|
||||
|
||||
# From mdns-aidl-interface
|
||||
rule android.net.mdns.aidl.** android.net.connectivity.@0
|
||||
|
||||
# From nearby-service, including proto
|
||||
rule service.proto.** com.android.server.nearby.@0
|
||||
rule androidx.annotation.Keep* com.android.server.nearby.@0
|
||||
rule androidx.collection.** com.android.server.nearby.@0
|
||||
rule androidx.core.** com.android.server.nearby.@0
|
||||
rule androidx.versionedparcelable.** com.android.server.nearby.@0
|
||||
rule com.google.common.** com.android.server.nearby.@0
|
||||
rule android.support.v4.** com.android.server.nearby.@0
|
||||
|
||||
# Remaining are connectivity sources in com.android.server and com.android.server.connectivity:
|
||||
# TODO: move to a subpackage of com.android.connectivity (such as com.android.connectivity.server)
|
||||
@@ -2,8 +2,6 @@
|
||||
# TODO: instead of keeping everything, consider listing only "entry points"
|
||||
# (service loader, JNI registered methods, etc) and letting the optimizer do its job
|
||||
-keep class android.net.** { *; }
|
||||
-keep class com.android.connectivity.** { *; }
|
||||
-keep class com.android.net.** { *; }
|
||||
-keep class !com.android.server.nearby.**,com.android.server.** { *; }
|
||||
|
||||
# Prevent proguard from stripping out any nearby-service and fast-pair-lite-protos fields.
|
||||
@@ -13,5 +11,5 @@
|
||||
# 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 android.net.connectivity.com.google.protobuf.MessageLite { <fields>; }
|
||||
# com.google.protobuf package is jarjared to use a package prefix.
|
||||
-keepclassmembers class * extends **.com.google.protobuf.MessageLite { <fields>; }
|
||||
|
||||
@@ -23,7 +23,7 @@ package {
|
||||
|
||||
java_library {
|
||||
name: "FrameworksNetCommonTests",
|
||||
defaults: ["framework-connectivity-test-defaults"],
|
||||
defaults: ["framework-connectivity-internal-test-defaults"],
|
||||
srcs: [
|
||||
"java/**/*.java",
|
||||
"java/**/*.kt",
|
||||
@@ -49,6 +49,7 @@ java_library {
|
||||
// jarjar stops at the first matching rule, so order of concatenation affects the output.
|
||||
genrule {
|
||||
name: "ConnectivityCoverageJarJarRules",
|
||||
defaults: ["jarjar-rules-combine-defaults"],
|
||||
srcs: [
|
||||
"tethering-jni-jarjar-rules.txt",
|
||||
":connectivity-jarjar-rules",
|
||||
@@ -56,8 +57,6 @@ genrule {
|
||||
":NetworkStackJarJarRules",
|
||||
],
|
||||
out: ["jarjar-rules-connectivity-coverage.txt"],
|
||||
// Concat files with a line break in the middle
|
||||
cmd: "for src in $(in); do cat $${src}; echo; done > $(out)",
|
||||
visibility: ["//visibility:private"],
|
||||
}
|
||||
|
||||
@@ -84,7 +83,7 @@ android_test {
|
||||
target_sdk_version: "31",
|
||||
test_suites: ["general-tests", "mts-tethering"],
|
||||
defaults: [
|
||||
"framework-connectivity-test-defaults",
|
||||
"framework-connectivity-internal-test-defaults",
|
||||
"FrameworksNetTests-jni-defaults",
|
||||
"libnetworkstackutilsjni_deps",
|
||||
],
|
||||
|
||||
@@ -21,7 +21,7 @@ package {
|
||||
|
||||
android_test {
|
||||
name: "FrameworksNetIntegrationTests",
|
||||
defaults: ["framework-connectivity-test-defaults"],
|
||||
defaults: ["framework-connectivity-internal-test-defaults"],
|
||||
platform_apis: true,
|
||||
certificate: "platform",
|
||||
srcs: [
|
||||
@@ -71,8 +71,12 @@ java_library {
|
||||
"net-tests-utils",
|
||||
],
|
||||
libs: [
|
||||
"service-connectivity-for-tests",
|
||||
"service-connectivity-pre-jarjar",
|
||||
"services.core",
|
||||
"services.net",
|
||||
],
|
||||
visibility: [
|
||||
"//packages/modules/Connectivity/tests/integration",
|
||||
"//packages/modules/Connectivity/tests/unit",
|
||||
],
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user