Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbf3e137 authored by Yan Yan's avatar Yan Yan Committed by Automerger Merge Worker
Browse files

Merge "Conditionally remove VCN jars from non-updatable platform" into main am: 08e435dd

parents cbbb1a44 08e435dd
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -29,10 +29,24 @@ aconfig_declarations {
    ],
}

// TODO: b/374174952 Remove this library when VCN modularization is done
java_aconfig_library {
    name: "android.net.vcn.flags-aconfig-java-export",
    aconfig_declarations: "android.net.vcn.flags-aconfig",
    mode: "exported",
    min_sdk_version: "35",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    apex_available: [
        "//apex_available:platform",
    ],
}

java_aconfig_library {
    name: "android.net.vcn.flags-aconfig-java",
    aconfig_declarations: "android.net.vcn.flags-aconfig",
    min_sdk_version: "35",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
    apex_available: [
        "com.android.tethering",
    ],
}
+76 −22
Original line number Diff line number Diff line
@@ -32,9 +32,9 @@ filegroup {
}

java_defaults {
    name: "framework-connectivity-b-defaults",
    name: "framework-connectivity-b-defaults-base",
    sdk_version: "module_current",
    min_sdk_version: "35", // TODO: Make it Android 25Q2 when this is included in mainline

    defaults: ["framework-module-defaults"], // This is a boot jar

    srcs: [
@@ -44,14 +44,10 @@ java_defaults {

    libs: [
        "android.net.ipsec.ike.stubs.module_lib",
        "app-compat-annotations",
        "framework-wifi.stubs.module_lib",
        "unsupportedappusage",
    ],
    static_libs: [
        //TODO:375213246 Use a non-exported flag lib when VCN is in mainline
        "android.net.vcn.flags-aconfig-java-export",
    ],

    aidl: {
        include_dirs: [
            // For connectivity-framework classes such as Network.aidl, NetworkCapabilities.aidl
@@ -60,16 +56,83 @@ java_defaults {
    },
}

soong_config_module_type {
    name: "framework_connectivity_b_defaults_soong_config",
    module_type: "java_defaults",
    config_namespace: "ANDROID",
    bool_variables: [
        "is_vcn_in_mainline",
    ],
    properties: [
        "min_sdk_version",
        "static_libs",
        "apex_available",
    ],
}

framework_connectivity_b_defaults_soong_config {
    name: "framework-connectivity-b-defaults",
    defaults: [
        "framework-connectivity-b-defaults-base",
    ],
    soong_config_variables: {
        is_vcn_in_mainline: {
            //TODO: b/380155299 Make it Baklava when aidl tool can understand it
            min_sdk_version: "current",
            static_libs: ["android.net.vcn.flags-aconfig-java"],
            apex_available: ["com.android.tethering"],

            conditions_default: {
                min_sdk_version: "35",
                static_libs: ["android.net.vcn.flags-aconfig-java-export"],
                apex_available: ["//apex_available:platform"],
            },
        },
    },
}

soong_config_module_type {
    name: "framework_connectivity_b_java_sdk_library_defaults_soong_config",
    module_type: "java_defaults",
    config_namespace: "ANDROID",
    bool_variables: [
        "is_vcn_in_mainline",
    ],
    properties: [
        "aconfig_declarations",
        "jarjar_rules",
    ],
}

framework_connectivity_b_java_sdk_library_defaults_soong_config {
    name: "framework-connectivity-b-java-sdk-library-defaults",
    soong_config_variables: {
        is_vcn_in_mainline: {
            aconfig_declarations: ["android.net.vcn.flags-aconfig-java"],

            // TODO: b/375213246 Use the connectivity jarjar rule generator to create the
            // jarjar rules. In the end state, use "framework-connectivity-jarjar-rules"
            // after VCN code is moved to the Connectivity folder
            jarjar_rules: "framework-vcn-jarjar-rules.txt",

            conditions_default: {
                aconfig_declarations: ["android.net.vcn.flags-aconfig-java-export"],

                // Use "android.net.connectivity" as prefix would trigger
                // "Hidden API flags are inconsistent" build error
                jarjar_rules: "framework-vcn-jarjar-rules-platform.txt",
            },
        },
    },
}

java_sdk_library {
    name: "framework-connectivity-b",
    defaults: [
        "framework-connectivity-b-defaults",
        "framework-connectivity-b-java-sdk-library-defaults",
    ],

    //TODO: b/375213246 Use "framework-connectivity-jarjar-rules" when VCN is
    // in mainline
    jarjar_rules: "framework-vcn-jarjar-rules.txt",

    permitted_packages: [
        "android.net",
        "android.net.vcn",
@@ -92,11 +155,6 @@ java_sdk_library {
        "framework-connectivity-pre-jarjar",
    ],

    aconfig_declarations: [
        //TODO:375213246 Use a non-exported flag lib when VCN is in mainline
        "android.net.vcn.flags-aconfig-java-export",
    ],

    impl_library_visibility: [
        // Using for test only
        "//cts/tests/netlegacy22.api",
@@ -120,17 +178,13 @@ java_sdk_library {
        "//packages/modules/Wifi/service/tests/wifitests",
    ],

    apex_available: [
        // TODO: b/374174952 Remove it when VCN modularization is released
        "//apex_available:platform",

        "com.android.tethering",
    ],
    visibility: ["//packages/modules/Connectivity:__subpackages__"],
}

java_library {
    name: "framework-connectivity-b-pre-jarjar",
    defaults: ["framework-connectivity-b-defaults"],
    installable: false,
    libs: [
        "framework-connectivity-pre-jarjar",
    ],
+2 −0
Original line number Diff line number Diff line
rule android.net.vcn.persistablebundleutils.** android.net.vcn.module.repackaged.persistablebundleutils.@1
rule android.net.vcn.util.** android.net.vcn.module.repackaged.util.@1
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
rule android.net.vcn.persistablebundleutils.** android.net.vcn.module.repackaged.persistablebundleutils.@1
rule android.net.vcn.util.** android.net.vcn.module.repackaged.util.@1
 No newline at end of file
rule android.net.vcn.persistablebundleutils.** android.net.connectivity.android.net.vcn.persistablebundleutils.@1
rule android.net.vcn.util.** android.net.connectivity.android.net.vcn.util.@1
 No newline at end of file
+10 −14
Original line number Diff line number Diff line
@@ -23,8 +23,6 @@ import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.SystemServiceRegistry;
import android.compat.Compatibility;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.vcn.IVcnManagementService;
@@ -40,17 +38,15 @@ import android.os.SystemProperties;
@FlaggedApi(FLAG_MAINLINE_VCN_MODULE_API)
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public final class ConnectivityFrameworkInitializerBaklava {
    /**
     * Starting with {@link VANILLA_ICE_CREAM}, Telephony feature flags (e.g. {@link
     * PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION}) are being checked before returning managers
     * that depend on them. If the feature is missing, {@link Context#getSystemService} will return
     * null.
     *
     * <p>This change is specific to VcnManager.
     */
    @ChangeId
    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM)
    private static final long ENABLE_CHECKING_TELEPHONY_FEATURES_FOR_VCN = 330902016;

    // This is a copy of TelephonyFrameworkInitializer.ENABLE_CHECKING_TELEPHONY_FEATURES. This
    // ChangeId will replace ENABLE_CHECKING_TELEPHONY_FEATURES_FOR_VCN to gate VcnManager
    // feature flag enforcement.
    // This replacement is safe because both ChangeIds have been enabled since Android V and serve
    // the same purpose: enforcing telephony feature flag checks before using telephony-based
    // features. This also simplifies VCN modularization by avoiding the need to handle different
    // states, such as: SDK < B vs. SDK >= B; VCN in platform vs. VCN in the apex.
    private static final long ENABLE_CHECKING_TELEPHONY_FEATURES = 330583731;

    /**
     * The corresponding vendor API for Android V
@@ -71,7 +67,7 @@ public final class ConnectivityFrameworkInitializerBaklava {
    private static String getVcnFeatureDependency() {
        // Check SDK version of the client app. Apps targeting pre-V SDK might
        // have not checked for existence of these features.
        if (!Compatibility.isChangeEnabled(ENABLE_CHECKING_TELEPHONY_FEATURES_FOR_VCN)) {
        if (!Compatibility.isChangeEnabled(ENABLE_CHECKING_TELEPHONY_FEATURES)) {
            return null;
        }

Loading