| load("//tools/base/bazel:android.bzl", "dex_library") |
| load("//tools/base/bazel:utils.bzl", "java_jarjar") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| filegroup( |
| name = "supportlib-srcs", |
| srcs = glob(["supportlib/src/main/**/*.java"]), |
| visibility = ["//visibility:private"], |
| ) |
| |
| filegroup( |
| name = "echo-sample-srcs", |
| srcs = glob(["echo-sample/src/main/**/*.java"]), |
| visibility = ["//visibility:private"], |
| ) |
| |
| # Since Energy profiler doesn't support compile-time instrumentation, don't include the src |
| # to avoid adding its dependencies. |
| filegroup( |
| name = "common-srcs-excluding-energy", |
| srcs = glob( |
| include = ["common/src/main/**/*.java"], |
| exclude = ["common/src/main/java/com/android/tools/profiler/support/energy/**/*.java"], |
| ), |
| visibility = ["//visibility:private"], |
| ) |
| |
| filegroup( |
| name = "common-srcs", |
| srcs = glob(["common/src/main/**/*.java"]), |
| visibility = ["//visibility:private"], |
| ) |
| |
| filegroup( |
| name = "perfa-srcs", |
| srcs = glob(["perfa/src/main/**/*.java"]), |
| visibility = ["//visibility:private"], |
| ) |
| |
| java_library( |
| name = "studio-profiler", |
| srcs = [ |
| ":common-srcs-excluding-energy", |
| ":echo-sample-srcs", |
| ":supportlib-srcs", |
| ], |
| resource_jars = select({ |
| "//tools/base/bazel:windows": [], |
| "//conditions:default": ["//tools/base/profiler/native/agent:supportjni"], |
| }), |
| deps = [ |
| "//prebuilts/studio/sdk:platforms/latest_jar", |
| "@maven//:androidx.annotation.annotation", |
| ], |
| ) |
| |
| java_library( |
| name = "perfa_java_core", |
| srcs = [ |
| ":common-srcs", |
| ":echo-sample-srcs", |
| ":perfa-srcs", |
| ], |
| deps = [ |
| "//prebuilts/studio/sdk:platforms/latest_jar", |
| # TODO(b/77923456): Track version changes and revisit. |
| "//prebuilts/tools/common/m2:com.google.android.gms.play-services-location.11.8.0", |
| "@maven//:androidx.annotation.annotation", |
| ], |
| ) |
| |
| java_jarjar( |
| name = "perfa_java", |
| srcs = [ |
| ":perfa_java_core", |
| ], |
| rules = "//tools/base/bazel:jarjar_rules.txt", |
| ) |
| |
| dex_library( |
| name = "perfa", |
| jars = [ |
| ":perfa_java", |
| "//prebuilts/tools/common/m2:androidx.inspection.inspection.1.0.0", |
| "//tools/base/app-inspection/agent", |
| ], |
| ) |
| |
| java_library( |
| name = "perfa_okhttp_java", |
| srcs = glob([ |
| "perfa-okhttp/src/main/**/*.java", |
| ]), |
| deps = [ |
| ":perfa_java", |
| "//prebuilts/studio/sdk:platforms/latest_jar", |
| "@maven//:androidx.annotation.annotation", |
| "@maven//:com.squareup.okhttp.okhttp", |
| "@maven//:com.squareup.okhttp3.okhttp", |
| "@maven//:com.squareup.okio.okio", |
| ], |
| ) |
| |
| dex_library( |
| name = "perfa_okhttp_dex_jar", |
| jars = [":perfa_okhttp_java"], |
| output = "perfa_okhttp_dex.jar", |
| ) |
| |
| # D8 does not allow generating multiple classes to a single dex file because |
| # of multidex. We are going to tell it to output to a zip file first and |
| # then extract classes.dex to it as our perfa_okhttp.dex. If this dex file |
| # over flows, add classes02.dex to it (and whatever needs to be done to upload |
| # to the device as well) |
| genrule( |
| name = "perfa_okhttp", |
| srcs = [":perfa_okhttp_dex.jar"], |
| outs = ["perfa_okhttp.dex"], |
| # Assumes everything fits into classes.dex, add classes02.dex should when it is full |
| cmd = "$(location //tools/base/bazel:unzipper) $(location :perfa_okhttp_dex.jar) classes.dex:$(location :perfa_okhttp.dex)", |
| tools = ["//tools/base/bazel:unzipper"], |
| ) |