From 62242c48e0511bd06a94b6e471cc70a2fb9d8a2a Mon Sep 17 00:00:00 2001 From: Makoto Onuki Date: Mon, 5 Aug 2019 12:54:20 -0700 Subject: [PATCH] Introduce framework-minus-apex and create jobscheduler-framework.jar Bug: 137763703 Test: Clean local build + "flash -w" and boot Test: Presubmit Test: atest CtsJobSchedulerTestCases Test: ./cts/tests/signature/runSignatureTests.sh Change-Id: Ie2a5a7a17f903ac18de0bcdde5be25311a62fa01 --- Android.bp | 71 ++++++++++++------- apex/jobscheduler/framework/Android.bp | 29 ++++++++ .../java/android/app/JobSchedulerImpl.java | 7 +- .../java/android/app/job/IJobCallback.aidl | 0 .../java/android/app/job/IJobScheduler.aidl | 0 .../java/android/app/job/IJobService.aidl | 0 .../java/android/app/job/JobInfo.aidl | 0 .../java/android/app/job/JobInfo.java | 0 .../java/android/app/job/JobParameters.aidl | 0 .../java/android/app/job/JobParameters.java | 5 ++ .../java/android/app/job/JobScheduler.java | 0 .../job/JobSchedulerFrameworkInitializer.java | 0 .../java/android/app/job/JobService.java | 0 .../android/app/job/JobServiceEngine.java | 0 .../java/android/app/job/JobSnapshot.aidl | 0 .../java/android/app/job/JobSnapshot.java | 0 .../java/android/app/job/JobWorkItem.aidl | 0 .../java/android/app/job/JobWorkItem.java | 0 .../server/job/JobSchedulerInternal.java | 0 location/lib/Android.bp | 2 +- media/lib/signer/Android.bp | 2 +- test-mock/Android.bp | 2 +- 22 files changed, 85 insertions(+), 33 deletions(-) create mode 100644 apex/jobscheduler/framework/Android.bp rename {core => apex/jobscheduler/framework}/java/android/app/JobSchedulerImpl.java (95%) rename {core => apex/jobscheduler/framework}/java/android/app/job/IJobCallback.aidl (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/IJobScheduler.aidl (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/IJobService.aidl (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobInfo.aidl (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobInfo.java (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobParameters.aidl (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobParameters.java (97%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobScheduler.java (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobSchedulerFrameworkInitializer.java (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobService.java (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobServiceEngine.java (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobSnapshot.aidl (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobSnapshot.java (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobWorkItem.aidl (100%) rename {core => apex/jobscheduler/framework}/java/android/app/job/JobWorkItem.java (100%) rename {core => apex/jobscheduler/framework}/java/com/android/server/job/JobSchedulerInternal.java (100%) diff --git a/Android.bp b/Android.bp index 4ef6c5e82a5da..1023b4818bb74 100644 --- a/Android.bp +++ b/Android.bp @@ -25,8 +25,36 @@ // // READ ME: ######################################################## +java_defaults { + name: "framework-aidl-export-defaults", + + aidl: { + export_include_dirs: [ + // From build/make/core/pathmap.mk FRAMEWORK_BASE_SUBDIRS + "core/java", + "graphics/java", + "location/java", + "lowpan/java", + "media/java", + "media/apex/java", + "media/mca/effect/java", + "media/mca/filterfw/java", + "media/mca/filterpacks/java", + "drm/java", + "opengl/java", + "sax/java", + "telecomm/java", + "telephony/java", + "wifi/java", + "keystore/java", + "rs/java", + ], + }, +} + java_defaults { name: "framework-defaults", + defaults: ["framework-aidl-export-defaults"], installable: true, srcs: [ @@ -78,9 +106,6 @@ java_defaults { "core/java/android/app/ISearchManagerCallback.aidl", "core/java/android/app/IServiceConnection.aidl", "core/java/android/app/IStopUserCallback.aidl", - "core/java/android/app/job/IJobCallback.aidl", - "core/java/android/app/job/IJobScheduler.aidl", - "core/java/android/app/job/IJobService.aidl", "core/java/android/app/ITransientNotification.aidl", "core/java/android/app/IUidObserver.aidl", "core/java/android/app/IUiAutomationConnection.aidl", @@ -702,27 +727,6 @@ java_defaults { ], aidl: { - export_include_dirs: [ - // From build/make/core/pathmap.mk FRAMEWORK_BASE_SUBDIRS - "core/java", - "graphics/java", - "location/java", - "lowpan/java", - "media/java", - "media/apex/java", - "media/mca/effect/java", - "media/mca/filterfw/java", - "media/mca/filterpacks/java", - "drm/java", - "opengl/java", - "sax/java", - "telecomm/java", - "telephony/java", - "wifi/java", - "keystore/java", - "rs/java", - ], - include_dirs: [ "system/update_engine/binder_bindings", "frameworks/native/aidl/binder", @@ -838,7 +842,7 @@ filegroup { } java_library { - name: "framework", + name: "framework-minus-apex", defaults: ["framework-defaults"], javac_shard_size: 150, required: [ @@ -847,6 +851,17 @@ java_library { ], } +java_library { + name: "framework", + defaults: ["framework-aidl-export-defaults"], + installable: true, + static_libs: [ + "framework-minus-apex", + "jobscheduler-framework", + ], + sdk_version: "core_platform", +} + java_library { name: "framework-annotation-proc", defaults: ["framework-defaults"], @@ -1371,8 +1386,9 @@ stubs_defaults { ":updatable-media-srcs-without-aidls", "test-mock/src/**/*.java", "test-runner/src/**/*.java", + ":jobscheduler-framework-source", ], - srcs_lib: "framework", + srcs_lib: "framework-minus-apex", srcs_lib_whitelist_dirs: frameworks_base_subdirs, srcs_lib_whitelist_pkgs: packages_to_document, libs: framework_docs_only_libs, @@ -1428,8 +1444,9 @@ stubs_defaults { ":opt-net-voip-srcs", ":core_public_api_files", ":updatable-media-srcs-without-aidls", + ":jobscheduler-framework-source", ], - srcs_lib: "framework", + srcs_lib: "framework-minus-apex", srcs_lib_whitelist_dirs: frameworks_base_subdirs, srcs_lib_whitelist_pkgs: packages_to_document, local_sourcepaths: frameworks_base_subdirs, diff --git a/apex/jobscheduler/framework/Android.bp b/apex/jobscheduler/framework/Android.bp new file mode 100644 index 0000000000000..bdb5248afcee2 --- /dev/null +++ b/apex/jobscheduler/framework/Android.bp @@ -0,0 +1,29 @@ +filegroup { + name: "jobscheduler-framework-source", + srcs: [ + "java/**/*.java", + "java/android/app/job/IJobCallback.aidl", + "java/android/app/job/IJobScheduler.aidl", + "java/android/app/job/IJobService.aidl", + ], + path: "java", +} + +java_library { + name: "jobscheduler-framework", + installable: true, + sdk_version: "core_platform", + + srcs: [ + ":jobscheduler-framework-source", + ], + + aidl: { + export_include_dirs: [ + "java", + ], + }, + libs: [ + "framework-minus-apex", + ], +} diff --git a/core/java/android/app/JobSchedulerImpl.java b/apex/jobscheduler/framework/java/android/app/JobSchedulerImpl.java similarity index 95% rename from core/java/android/app/JobSchedulerImpl.java rename to apex/jobscheduler/framework/java/android/app/JobSchedulerImpl.java index 924a70809747a..f59e7a4ae6ecd 100644 --- a/core/java/android/app/JobSchedulerImpl.java +++ b/apex/jobscheduler/framework/java/android/app/JobSchedulerImpl.java @@ -14,7 +14,6 @@ * limitations under the License. */ -// in android.app so ContextImpl has package access package android.app; import android.app.job.IJobScheduler; @@ -27,10 +26,12 @@ import android.os.RemoteException; import java.util.List; -// APEX NOTE: Class path referred to by robolectric, so can't move it. - /** * Concrete implementation of the JobScheduler interface + * + * Note android.app.job is the better package to put this class, but we can't move it there + * because that'd break robolectric. Grr. + * * @hide */ public class JobSchedulerImpl extends JobScheduler { diff --git a/core/java/android/app/job/IJobCallback.aidl b/apex/jobscheduler/framework/java/android/app/job/IJobCallback.aidl similarity index 100% rename from core/java/android/app/job/IJobCallback.aidl rename to apex/jobscheduler/framework/java/android/app/job/IJobCallback.aidl diff --git a/core/java/android/app/job/IJobScheduler.aidl b/apex/jobscheduler/framework/java/android/app/job/IJobScheduler.aidl similarity index 100% rename from core/java/android/app/job/IJobScheduler.aidl rename to apex/jobscheduler/framework/java/android/app/job/IJobScheduler.aidl diff --git a/core/java/android/app/job/IJobService.aidl b/apex/jobscheduler/framework/java/android/app/job/IJobService.aidl similarity index 100% rename from core/java/android/app/job/IJobService.aidl rename to apex/jobscheduler/framework/java/android/app/job/IJobService.aidl diff --git a/core/java/android/app/job/JobInfo.aidl b/apex/jobscheduler/framework/java/android/app/job/JobInfo.aidl similarity index 100% rename from core/java/android/app/job/JobInfo.aidl rename to apex/jobscheduler/framework/java/android/app/job/JobInfo.aidl diff --git a/core/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java similarity index 100% rename from core/java/android/app/job/JobInfo.java rename to apex/jobscheduler/framework/java/android/app/job/JobInfo.java diff --git a/core/java/android/app/job/JobParameters.aidl b/apex/jobscheduler/framework/java/android/app/job/JobParameters.aidl similarity index 100% rename from core/java/android/app/job/JobParameters.aidl rename to apex/jobscheduler/framework/java/android/app/job/JobParameters.aidl diff --git a/core/java/android/app/job/JobParameters.java b/apex/jobscheduler/framework/java/android/app/job/JobParameters.java similarity index 97% rename from core/java/android/app/job/JobParameters.java rename to apex/jobscheduler/framework/java/android/app/job/JobParameters.java index ecc859d8320c2..150cdbc3cacf2 100644 --- a/core/java/android/app/job/JobParameters.java +++ b/apex/jobscheduler/framework/java/android/app/job/JobParameters.java @@ -52,6 +52,11 @@ public class JobParameters implements Parcelable { /** * All the stop reason codes. This should be regarded as an immutable array at runtime. + * + * Note the order of these values will affect "dumpsys batterystats", and we do not want to + * change the order of existing fields, so adding new fields is okay but do not remove or + * change existing fields. When deprecating a field, just replace that with "-1" in this array. + * * @hide */ public static final int[] JOB_STOP_REASON_CODES = { diff --git a/core/java/android/app/job/JobScheduler.java b/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java similarity index 100% rename from core/java/android/app/job/JobScheduler.java rename to apex/jobscheduler/framework/java/android/app/job/JobScheduler.java diff --git a/core/java/android/app/job/JobSchedulerFrameworkInitializer.java b/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java similarity index 100% rename from core/java/android/app/job/JobSchedulerFrameworkInitializer.java rename to apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java diff --git a/core/java/android/app/job/JobService.java b/apex/jobscheduler/framework/java/android/app/job/JobService.java similarity index 100% rename from core/java/android/app/job/JobService.java rename to apex/jobscheduler/framework/java/android/app/job/JobService.java diff --git a/core/java/android/app/job/JobServiceEngine.java b/apex/jobscheduler/framework/java/android/app/job/JobServiceEngine.java similarity index 100% rename from core/java/android/app/job/JobServiceEngine.java rename to apex/jobscheduler/framework/java/android/app/job/JobServiceEngine.java diff --git a/core/java/android/app/job/JobSnapshot.aidl b/apex/jobscheduler/framework/java/android/app/job/JobSnapshot.aidl similarity index 100% rename from core/java/android/app/job/JobSnapshot.aidl rename to apex/jobscheduler/framework/java/android/app/job/JobSnapshot.aidl diff --git a/core/java/android/app/job/JobSnapshot.java b/apex/jobscheduler/framework/java/android/app/job/JobSnapshot.java similarity index 100% rename from core/java/android/app/job/JobSnapshot.java rename to apex/jobscheduler/framework/java/android/app/job/JobSnapshot.java diff --git a/core/java/android/app/job/JobWorkItem.aidl b/apex/jobscheduler/framework/java/android/app/job/JobWorkItem.aidl similarity index 100% rename from core/java/android/app/job/JobWorkItem.aidl rename to apex/jobscheduler/framework/java/android/app/job/JobWorkItem.aidl diff --git a/core/java/android/app/job/JobWorkItem.java b/apex/jobscheduler/framework/java/android/app/job/JobWorkItem.java similarity index 100% rename from core/java/android/app/job/JobWorkItem.java rename to apex/jobscheduler/framework/java/android/app/job/JobWorkItem.java diff --git a/core/java/com/android/server/job/JobSchedulerInternal.java b/apex/jobscheduler/framework/java/com/android/server/job/JobSchedulerInternal.java similarity index 100% rename from core/java/com/android/server/job/JobSchedulerInternal.java rename to apex/jobscheduler/framework/java/com/android/server/job/JobSchedulerInternal.java diff --git a/location/lib/Android.bp b/location/lib/Android.bp index 16f1428d2ee2d..ab01ddbe4e602 100644 --- a/location/lib/Android.bp +++ b/location/lib/Android.bp @@ -21,7 +21,7 @@ java_sdk_library { "androidx.annotation_annotation", ], api_packages: ["com.android.location.provider"], - srcs_lib: "framework", + srcs_lib: "framework-minus-apex", srcs_lib_whitelist_dirs: ["location/java"], srcs_lib_whitelist_pkgs: ["com.android.internal.location"], } diff --git a/media/lib/signer/Android.bp b/media/lib/signer/Android.bp index 44f8725ec6f57..f320397bc84b5 100644 --- a/media/lib/signer/Android.bp +++ b/media/lib/signer/Android.bp @@ -18,7 +18,7 @@ java_sdk_library { name: "com.android.mediadrm.signer", srcs: ["java/**/*.java"], api_packages: ["com.android.mediadrm.signer"], - srcs_lib: "framework", + srcs_lib: "framework-minus-apex", srcs_lib_whitelist_dirs: ["media/java"], srcs_lib_whitelist_pkgs: ["android.media"], } diff --git a/test-mock/Android.bp b/test-mock/Android.bp index a5cd1751151f7..0129c4ca5bc16 100644 --- a/test-mock/Android.bp +++ b/test-mock/Android.bp @@ -25,7 +25,7 @@ java_sdk_library { "android.test.mock", ], - srcs_lib: "framework", + srcs_lib: "framework-minus-apex", srcs_lib_whitelist_dirs: ["core/java"], srcs_lib_whitelist_pkgs: ["android"], compile_dex: true,