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

Commit 16fe4543 authored by Remi NGUYEN VAN's avatar Remi NGUYEN VAN
Browse files

Update NetworkStack, NetworkStackNext SDK versions

Set NetworkStackNext version to 300000000: it effectively targets R
APIs, so as per the version scheme, the leading digits should be 30 and
not 29.
This prevents accidental updates of NetworkStackNext with NetworkStack,
as R devices should stay on NetworkStackNext to provide test coverage
for new R APIs.

Set min_sdk_version and target_sdk_version to 29 on targets that build
against stable SDK.
Remove the above attributes on targets that build against current SDK;
the build system will automatically assign the appropriate min_sdk and
target_sdk for those.

This change also changes TestNetworkStackLib to use the release API
level instead of the development API level. This makes the tests closer
to the updates that are shipped, although it prevents the integration
tests from exercising development API-only logic. This is necessary as
the tests cannot both be compatible with stable API devices, and depend
on an android_library with a development min_sdk.

Test: aapt dump badging shows the new values for NetworkStack,
      and for NetworkStackNext: NetworkStackNext has min_sdk and
      target_sdk "R", NetworkStack is 29.
      atest NetworkStackIntegrationTests FrameworksNetIntegrationTests
Change-Id: I9daed95697d21fb79af2514bbb0abc57bc6a4b5e
parent ef60e461
Loading
Loading
Loading
Loading
+39 −18
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@
//                          NetworkStackAndroidLibraryDefaults <-- common defaults for android libs
//                                            /    \
//           +NetworkStackApiStableShims --> /      \ <-- +NetworkStackApiCurrentShims
//           +NetworkStackApiStableLevel    /        \    +NetworkStackApiCurrentLevel
//           +NetworkStackReleaseApiLevel   /        \    +NetworkStackDevApiLevel
//           +jarjar apistub.api[latest].* /          \   +module src/
//            to apistub.*                /            \
//                                       /              \
@@ -34,7 +34,7 @@
//                          | <--   +NetworkStackAppDefaults  --> |
//                          |          (APK build params)         |
//                          |                                     |
//                          | <-- +NetworkStackApiStableLevel     | <-- +NetworkStackApiCurrentLevel
//                          | <-- +NetworkStackReleaseApiLevel    | <-- +NetworkStackDevApiLevel
//                          |                                     |
//                          |                                     |
//                NetworkStackApiStable          NetworkStack, InProcessNetworkStack, <-- APKs
@@ -42,15 +42,15 @@

// Common defaults to define SDK level
java_defaults {
    name: "NetworkStackApiCurrentLevel",
    name: "NetworkStackDevApiLevel",
    sdk_version: "system_current",
    min_sdk_version: "28",
}

java_defaults {
    name: "NetworkStackApiStableLevel",
    name: "NetworkStackReleaseApiLevel",
    sdk_version: "system_29",
    min_sdk_version: "28",
    min_sdk_version: "29",
    target_sdk_version: "29",
}

// Filegroups for the API shims
@@ -101,7 +101,7 @@ java_defaults {
// there eventually), and to use the compat shim as fallback on older devices.
android_library {
    name: "NetworkStackApiCurrentLib",
    defaults: ["NetworkStackApiCurrentLevel", "NetworkStackAndroidLibraryDefaults"],
    defaults: ["NetworkStackDevApiLevel", "NetworkStackAndroidLibraryDefaults"],
    srcs: [
        ":NetworkStackApiCurrentShims",
        "src/**/*.java",
@@ -114,14 +114,14 @@ android_library {
// linking with the dependencies.
java_library {
    name: "NetworkStackApiStableDependencies",
    defaults: ["NetworkStackApiStableLevel", "NetworkStackAndroidLibraryDefaults"],
    defaults: ["NetworkStackReleaseApiLevel", "NetworkStackAndroidLibraryDefaults"],
    srcs: [":NetworkStackApiStableShims"],
    jarjar_rules: "apishim/jarjar-rules-compat.txt",
}

android_library {
    name: "NetworkStackApiStableLib",
    defaults: ["NetworkStackApiStableLevel"],
    defaults: ["NetworkStackReleaseApiLevel"],
    srcs: [
        "src/**/*.java",
        ":statslog-networkstack-java-gen-q",
@@ -153,7 +153,7 @@ java_defaults {
// Non-updatable network stack running in the system server process for devices not using the module
android_app {
    name: "InProcessNetworkStack",
    defaults: [ "NetworkStackAppDefaults", "NetworkStackApiCurrentLevel"],
    defaults: [ "NetworkStackAppDefaults", "NetworkStackDevApiLevel"],
    static_libs: ["NetworkStackApiCurrentLib"],
    certificate: "platform",
    manifest: "AndroidManifest_InProcess.xml",
@@ -165,13 +165,13 @@ android_app {
    required: ["PlatformNetworkPermissionConfig", "PlatformCaptivePortalLogin"],
}

// Updatable network stack packaged as an application
// NetworkStack build targeting the current API release, for testing on in-development SDK
android_app {
    name: "NetworkStackNext",
    defaults: ["NetworkStackAppDefaults", "NetworkStackApiCurrentLevel"],
    defaults: ["NetworkStackAppDefaults", "NetworkStackDevApiLevel"],
    static_libs: ["NetworkStackApiCurrentLib"],
    certificate: "networkstack",
    manifest: "AndroidManifest.xml",
    manifest: ":NetworkStackNextAndroidManifest",
    // The permission configuration *must* be included to ensure security of the device
    required: ["NetworkPermissionConfig"],
}
@@ -179,7 +179,7 @@ android_app {
// Updatable network stack for finalized API
android_app {
    name: "NetworkStack",
    defaults: ["NetworkStackAppDefaults", "NetworkStackApiStableLevel"],
    defaults: ["NetworkStackAppDefaults", "NetworkStackReleaseApiLevel"],
    static_libs: ["NetworkStackApiStableLib"],
    certificate: "networkstack",
    manifest: "AndroidManifest.xml",
@@ -190,8 +190,8 @@ android_app {
// Android library to derive test APKs for integration tests
android_library {
    name: "TestNetworkStackLib",
    defaults: ["NetworkStackAppDefaults", "NetworkStackApiCurrentLevel"],
    static_libs: ["NetworkStackApiCurrentLib"],
    defaults: ["NetworkStackAppDefaults", "NetworkStackReleaseApiLevel"],
    static_libs: ["NetworkStackApiStableLib"],
    manifest: "AndroidManifestBase.xml",
}

@@ -243,16 +243,37 @@ genrule {
    out: ["com/android/networkstack/metrics/NetworkStackStatsLog.java"],
}

version_code_networkstack_next = "300000000"
version_code_networkstack_test = "999999999"

genrule {
    name: "NetworkStackTestAndroidManifest",
    srcs: ["AndroidManifest.xml"],
    out: ["TestAndroidManifest.xml"],
    cmd: "sed 's/versionCode=\".*\"/versionCode=\"300000000\"/' $(in) > $(out)",
    cmd: "sed -E 's/versionCode=\"[0-9]+\"/versionCode=\""
        + version_code_networkstack_test
        + "\"/' $(in) > $(out)",
    visibility: ["//visibility:private"],
}

// genrule to modify the NetworkStack manifest for NetworkStackNext, which is the "next" version
// that builds against the "next", non-stable APIs.
// A genrule seems simpler than having yet another manifest to merge. The only elements that would
// change in the manifest are the version code, and the min/target SDK which are populated
// automatically on build with the current SDK.
genrule {
    name: "NetworkStackNextAndroidManifest",
    srcs: ["AndroidManifest.xml"],
    out: ["NetworkStackNextAndroidManifest.xml"],
    cmd: "sed -E 's/versionCode=\"[0-9]+\"/versionCode=\""
        + version_code_networkstack_next
        + "\"/' $(in) > $(out)",
    visibility: ["//visibility:private"],
}

android_app {
    name: "TestNetworkStack",
    defaults: ["NetworkStackAppDefaults", "NetworkStackApiCurrentLevel"],
    defaults: ["NetworkStackAppDefaults", "NetworkStackDevApiLevel"],
    static_libs: ["NetworkStackApiCurrentLib"],
    certificate: "networkstack",
    manifest: ":NetworkStackTestAndroidManifest",
+0 −3
Original line number Diff line number Diff line
@@ -22,9 +22,6 @@
  android:versionCode="299900000"
  android:versionName="2019-09"
>

    <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />

    <!-- Permissions must be defined here, and not in the base manifest, as the network stack
         running in the system server process does not need any permission, and having privileged
         permissions added would cause crashes on startup unless they are also added to the
+0 −1
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@
          package="com.android.networkstack.inprocess"
          android:sharedUserId="android.uid.system"
          android:process="system">
    <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="28" />
    <application>
        <service android:name="com.android.server.NetworkStackService"
                 android:process="system"