Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Android/art/art/build/apex/   (Android Betriebssystem Version 17©)  Datei vom 26.5.2026 mit Größe 14 kB image not shown  

Quelle  Android.bp   Sprache: unbekannt

 
Spracherkennung für: .bp vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

// ART APEX module
//
// Contains both the Android Managed Runtime (ART) and the Android Core Library
// (Libcore).

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "art_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["art_license"],
}

// Create combined library which is used for compiling run-tests.
// This is much easier than trying to make the test depend on them directly,
// or than trying to make the test compilation depend on the apex module.
// Some of the components are only visible here (but not in test Android.bp).
java_library {
    name: "art-run-test-bootclasspath",
    sdk_version: "core_platform",
    static_libs: [
        "framework-annotations-lib",
        // Core Java libraries. This list must be the same as
        // art-bootclasspath-fragment because it's that which is pulled in
        // through bootclasspath_fragments in com.android-art-base-defaults.
        "core-oj",
        "core-libart",
        "okhttp",
        "bouncycastle",
        "apache-xml",
    ],
}

java_system_modules {
    name: "art-run-test-system-module",
    visibility: ["//visibility:public"],
    libs: [
        "art-run-test-bootclasspath",
        "libcore-string-concat-stub",
    ],
}

android_app_certificate {
    name: "com.android.art.certificate",
    certificate: "com.android.art",
}

apex_key {
    name: "com.android.art.key",
    public_key: "com.android.art.avbpubkey",
    private_key: "com.android.art.pem",
}

linker_config {
    name: "art-linker-config",
    src: "linker.config.json",
    installable: false,
}

prebuilt_etc {
    name: "com.android.art.init.rc",
    src: "art.rc",
    filename: "init.rc",
    installable: false,
}

prebuilt_etc {
    name: "dirty-image-objects-art",
    src: "dirty-image-objects",
    filename: "dirty-image-objects",
    installable: false,
}

// Default shared by all ART APEXes.
apex_defaults {
    name: "com.android.art-base-defaults",
    defaults: ["s-launched-apex-module"],

    manifest: "manifest-art.json",
    key: "com.android.art.key",
    certificate: ":com.android.art.certificate",
    bootclasspath_fragments: ["art-bootclasspath-fragment"],
    systemserverclasspath_fragments: ["art-systemserverclasspath-fragment"],
    compat_configs: ["libcore-platform-compat-config"],
    prebuilts: [
        "art-linker-config",
        "com.android.art.init.rc",
        "current_sdkinfo",
        "dirty-image-objects-art",
    ],

    compile_multilib: "both",

    native_shared_libs: [
        // ART
        // External API (having APEX stubs).
        "libdexfile",
        "libnativebridge",
        "libnativehelper",
        "libnativeloader",
        "libsigchain",
        // These libraries are loaded at runtime from libart (either through
        // dlopen() or by instructing the user to load with -Xplugin), but they
        // cannot be runtime_lib dependencies from there because of cyclic
        // dependencies (b/124505714).
        "libadbconnection",
        "libopenjdkjvmti",
        "libperfetto_hprof",
        // Likewise libart is loaded at runtime from libnativeloader and also must
        // be specified explicitly due to cyclic dependencies. However, it's not
        // listed directly here since test_broken_com.android.art uses a different
        // implementation.

        // Libcore
        // External API (having APEX stubs).
        "libandroidio",
        // This library is loaded at runtime from libart but cannot be a runtime_lib
        // dependency from there because of cyclic dependencies (b/124505714).
        "libopenjdk",
        // These libraries are internal dependencies in libcore, but they don't get
        // pulled in automatically into apex_test modules.
        "libexpat",
        "libopenjdkjvm",
    ],

    multilib: {
        both: {
            binaries: [
                "dalvikvm",
                "dex2oat",
            ],
        },
        first: {
            binaries: [
                "art_boot",
                "art_exec",
                "artd",
                "dexdump",
                "dexlist",
                "dexopt_chroot_setup",
                "dexoptanalyzer",
                "oatdump",
                "profman",
            ],
            jni_libs: [
                "libartservice",
            ],
        },
    },

    licenses: [
        "art_license",
        "opensourcerequest",
    ],
}

// Default values shared by Debug and Testing ART APEXes.
apex_defaults {
    name: "com.android.art-devel-defaults",
    defaults: ["com.android.art-base-defaults"],

    native_shared_libs: [
        "libadbconnectiond",
        "libdexfiled",
        "libopenjdkd",
        "libopenjdkjvmtid",
        "libperfetto_hprofd",
    ],

    multilib: {
        both: {
            binaries: [
                "dex2oatd",
                "imgdiag",
                "imgdiagd",
            ],
        },
        first: {
            binaries: [
                "dexanalyze",
                "dexoptanalyzerd",
                "oatdumpd",
                "profmand",
            ],
        },
    },
}

// "Broken" test APEX, only used for testing, including module
// `libart-broken` instead of `libart`.
apex_test {
    name: "test_broken_com.android.art",
    defaults: ["com.android.art-base-defaults"],
    manifest: "test_apex_manifest.json",
    file_contexts: ":com.android.art-file_contexts",
    installable: false,
    compressible: false,

    native_shared_libs: ["libart-broken"],
    unwanted_transitive_deps: ["libart"],
}

apex_test {
    name: "test_jitzygote_com.android.art",
    defaults: ["com.android.art-base-defaults"],
    manifest: "test_apex_manifest.json",
    file_contexts: ":com.android.art-file_contexts",
    installable: false,

    native_shared_libs: ["libart"],
    multilib: {
        first: {
            binaries: ["odrefresh_broken"],
        },
    },
}

// Same as "com.android.art" APEX, but also contains "imgdiag" binary.
// Used to collect dirty-image-objects.
apex_test {
    name: "test_imgdiag_com.android.art",
    defaults: ["com.android.art-base-defaults"],
    manifest: "test_apex_manifest.json",
    file_contexts: ":com.android.art-file_contexts",
    installable: false,

    native_shared_libs: ["libart"],
    multilib: {
        both: {
            binaries: [
                "imgdiag",
                "pageinfo",
                "find_unshared_pages",
            ],
        },
        first: {
            binaries: ["odrefresh"],
        },
    },
}

// Release version of the ART APEX module (not containing debug
// variants nor tools), included in user builds. Also used for
// storage-constrained devices in userdebug and eng builds.
apex {
    name: "com.android.art",
    defaults: ["com.android.art-base-defaults"],

    native_shared_libs: ["libart"],
    multilib: {
        first: {
            binaries: ["odrefresh"],
        },
    },

    visibility: [
        "//art/build/sdk",
        "//art/tools/fuzzer",
        "//packages/modules/common/build",
    ],
}

// "Debug" version of the ART APEX module (containing both release and
// debug variants, as well as additional tools), included in eng builds.
apex {
    name: "com.android.art.debug",
    defaults: ["com.android.art-devel-defaults"],
    // Use a different manifest for this APEX (which has no prebuilts and is
    // thus always built from sources), with a high version number that ensures
    // that these packages can be installed on virtually all Android dessert
    // releases.
    manifest: "manifest-art-debug.json",

    native_shared_libs: [
        "libart",
        "libartd",
    ],
    multilib: {
        first: {
            binaries: ["odrefresh"],
            jni_libs: ["libartserviced"],
        },
    },

    visibility: [
        "//packages/modules/common/build",
    ],

    overrides: [
        "com.google.android.art",
        "com.google.android.go.art",
    ],
}

// ART gtests with dependencies on internal ART APEX libraries.
art_gtests = [
    "art_cmdline_tests",
    "art_compiler_tests",
    "art_dex2oat_tests",
    "art_dexanalyze_tests",
    "art_dexdump_tests",
    "art_dexlist_tests",
    "art_disassembler_tests",
    "art_dexoptanalyzer_tests",
    "art_imgdiag_tests",
    "art_libartbase_tests",
    "art_libdexfile_tests",
    "art_libdexfile_support_tests",
    "art_libprofile_tests",
    "art_oatdump_tests",
    "art_profman_tests",
    "art_runtime_tests",
    "art_sigchain_tests",
]

// ART gtests for which the "first" version is preferred.
art_gtests_first = [
    "art_odrefresh_tests",
]

// "Testing" version of the ART APEX module (containing both release
// and debug variants, additional tools, and ART gtests), for testing
// purposes only.
apex_test {
    name: "com.android.art.testing",
    defaults: ["com.android.art-devel-defaults"],
    file_contexts: ":com.android.art.debug-file_contexts",
    tests: art_gtests,
    binaries: ["signal_dumper"], // Need signal_dumper for run-tests.
    // Use a different manifest for this APEX (which has no prebuilts and is
    // thus always built from sources), with a high version number that ensures
    // that these packages can be installed on virtually all Android dessert
    // releases.
    manifest: "manifest-art-debug.json",
    // Mark this test APEX as non-updatable, as its contains
    // additional files (used only for testing) that would not pass
    // dependency checks performed on updatable APEXes (see
    // go/apex-allowed-deps-error).
    updatable: false,
    // Because this APEX is non-updatable, some of its native shared
    // libraries (implicitly added as dependencies) are eligible to
    // the symlink optimization. As we want this APEX to be
    // self-contained (for testing purposes), we want to package
    // these dependencies in this APEX, instead of symbolic links to
    // their counterparts on the `system` partition, which may not
    // even exist, as in the case of `libbacktrace` (see b/232790938
    // and b/233357459). Marking this APEX as "future updatable"
    // disables all symlink optimizations for it.
    future_updatable: true,

    native_shared_libs: [
        "libart",
        "libartd",
        "libarttest",
        "libarttestd",
        "libtiagent",
        "libtiagentd",
        "art_fake_libstatspull",
    ],
    multilib: {
        first: {
            tests: art_gtests_first,
            binaries: ["odrefresh"],
            jni_libs: ["libartserviced"],
        },
    },
}

python_binary_host {
    name: "art-apex-tester",
    srcs: ["art_apex_test.py"],
    main: "art_apex_test.py",
}

// Genrules so we can run the checker, and empty Java library so that it gets executed.

art_check_apex_gen_stem = "$(location art-apex-tester)" +
    " --deapexer $(location deapexer)" +
    " --debugfs $(location debugfs_static)" +
    " --fsckerofs $(location fsck.erofs)" +
    " --tmpdir $(genDir)"

// The non-flattened APEXes are always checked, as they are always generated
// (even when APEX flattening is enabled).
genrule_defaults {
    name: "art-check-apex-gen-defaults",
    tools: [
        "art-apex-tester",
        "deapexer",
        "debugfs_static",
        "fsck.erofs",
    ],
}

cc_defaults {
    name: "art-check-apex-gen-fakebin-defaults",
    host_supported: true,
    device_supported: false,

    target: {
        darwin: {
            enabled: false, // No python3.
        },
    },
}

java_genrule {
    name: "art-check-release-apex-gen",
    host_supported: true,
    device_supported: false,
    defaults: ["art-check-apex-gen-defaults"],
    device_common_srcs: [":com.android.art"],
    cmd: art_check_apex_gen_stem +
        " --flavor release" +
        " $(in)" +
        " && touch $(out)" +
        " && chmod a+x $(out)",
    out: ["art-check-release-apex-gen.unused"],
}

cc_prebuilt_binary {
    name: "art-check-release-apex-gen-fakebin",
    defaults: ["art-check-apex-gen-fakebin-defaults"],
    srcs: [":art-check-release-apex-gen"],
}

java_genrule {
    name: "art-check-debug-apex-gen",
    host_supported: true,
    device_supported: false,
    defaults: ["art-check-apex-gen-defaults"],
    device_common_srcs: [":com.android.art.debug"],
    cmd: art_check_apex_gen_stem +
        " --flavor debug" +
        " $(in)" +
        " && touch $(out)" +
        " && chmod a+x $(out)",
    out: ["art-check-debug-apex-gen.unused"],
}

cc_prebuilt_binary {
    name: "art-check-debug-apex-gen-fakebin",
    defaults: ["art-check-apex-gen-fakebin-defaults"],
    srcs: [":art-check-debug-apex-gen"],
}

java_genrule {
    name: "art-check-testing-apex-gen",
    host_supported: true,
    device_supported: false,
    defaults: ["art-check-apex-gen-defaults"],
    device_common_srcs: [":com.android.art.testing"],
    cmd: art_check_apex_gen_stem +
        " --flavor testing" +
        " $(in)" +
        " && touch $(out)" +
        " && chmod a+x $(out)",
    out: ["art-check-testing-apex-gen.unused"],
}

cc_prebuilt_binary {
    name: "art-check-testing-apex-gen-fakebin",
    defaults: ["art-check-apex-gen-fakebin-defaults"],
    srcs: [":art-check-testing-apex-gen"],
}

// A zip containing ART binaries and ART bootclasspath jars.
// At the time of writing, this is only for Compiler Explorer (https://godbolt.org).
java_genrule {
    name: "art_release_zip",
    srcs: [
        ":com.android.art",
    ],
    common_os_srcs: [
        ":art-module-host-exports",
    ],
    out: [
        "art_release.zip",
    ],
    tools: [
        "deapexer",
        "debugfs",
        "fsck.erofs",
        "merge_zips",
        "soong_zip",
    ],
    cmd: "$(location deapexer) " +
        "--debugfs_path $(location debugfs) " +
        "--fsckerofs_path $(location fsck.erofs) " +
        "extract $(location :com.android.art) $(genDir)/extracted && " +

        "$(location soong_zip) -o $(out).tmp -P bootjars -j " +
        "-f $(genDir)/extracted/javalib/core-oj.jar " +
        "-f $(genDir)/extracted/javalib/core-libart.jar " +
        "-f $(genDir)/extracted/javalib/okhttp.jar " +
        "-f $(genDir)/extracted/javalib/bouncycastle.jar " +
        "-f $(genDir)/extracted/javalib/apache-xml.jar && " +

        "$(location merge_zips) $(out) $(out).tmp $(location :art-module-host-exports)",
    dist: {
        targets: ["droidcore"],
    },
}

[Dauer der Verarbeitung: 0.20 Sekunden, vorverarbeitet 2026-06-29]