From 0a3b7ad5bab540f884cfededc5ceb6a26d9de32c Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Thu, 19 Dec 2019 10:17:46 +0000 Subject: [PATCH] Stop building against core_platform where possible This is not a stable API surface, so modules shouldn't be building against it. Compiling against core_platform also disables link-checking, which can hide other problems. Bug: 137191822 Test: m Change-Id: I7ce7dad8c02b094c565daf8c178bc6f89bb610ef Merged-In: I7ce7dad8c02b094c565daf8c178bc6f89bb610ef (cherry picked from commit 791551a70fce9267626bb39aa03af80e269e5506) --- Android.bp | 5 +++-- cmds/statsd/Android.bp | 2 +- core/java/android/annotation/CallbackExecutor.java | 10 ++++------ core/java/android/annotation/RequiresPermission.java | 9 +++++---- media/Android.bp | 4 +++- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Android.bp b/Android.bp index 1aaa6044111a1..e7845467e758c 100644 --- a/Android.bp +++ b/Android.bp @@ -608,7 +608,7 @@ filegroup { java_library { name: "framework-annotations-lib", srcs: [ ":framework-annotations" ], - sdk_version: "current", + sdk_version: "core_current", } filegroup { @@ -739,7 +739,7 @@ java_library { "core/proto/android/privacy.proto", "core/proto/android/section.proto", ], - sdk_version: "current", + sdk_version: "9", srcs: [ "core/proto/**/*.proto", "libs/incident/proto/android/os/**/*.proto", @@ -762,6 +762,7 @@ java_library { "core/proto/android/privacy.proto", "core/proto/android/section.proto", ], + sdk_version: "core_current", // Protos have lots of MissingOverride and similar. errorprone: { javacflags: ["-XepDisableAllChecks"], diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp index 72a8bea9a9188..24fbf21f463fa 100644 --- a/cmds/statsd/Android.bp +++ b/cmds/statsd/Android.bp @@ -382,7 +382,7 @@ cc_benchmark { // ==== java proto device library (for test only) ============================== java_library { name: "statsdprotolite", - sdk_version: "core_platform", + sdk_version: "core_current", proto: { type: "lite", include_dirs: ["external/protobuf/src"], diff --git a/core/java/android/annotation/CallbackExecutor.java b/core/java/android/annotation/CallbackExecutor.java index 5671a3d2b6d6d..4258f730eb165 100644 --- a/core/java/android/annotation/CallbackExecutor.java +++ b/core/java/android/annotation/CallbackExecutor.java @@ -19,9 +19,6 @@ package android.annotation; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.SOURCE; -import android.content.Context; -import android.os.AsyncTask; - import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.util.concurrent.Executor; @@ -30,9 +27,10 @@ import java.util.concurrent.Executor; * @paramDoc Callback and listener events are dispatched through this * {@link Executor}, providing an easy way to control which thread is * used. To dispatch events through the main thread of your - * application, you can use {@link Context#getMainExecutor()}. To - * dispatch events through a shared thread pool, you can use - * {@link AsyncTask#THREAD_POOL_EXECUTOR}. + * application, you can use + * {@link android.content.Context#getMainExecutor() Context.getMainExecutor()}. + * To dispatch events through a shared thread pool, you can use + * {@link android.os.AsyncTask#THREAD_POOL_EXECUTOR AsyncTask#THREAD_POOL_EXECUTOR}. * @hide */ @Retention(SOURCE) diff --git a/core/java/android/annotation/RequiresPermission.java b/core/java/android/annotation/RequiresPermission.java index e5c0654f8bbe3..1d89e31b2b991 100644 --- a/core/java/android/annotation/RequiresPermission.java +++ b/core/java/android/annotation/RequiresPermission.java @@ -15,9 +15,6 @@ */ package android.annotation; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; @@ -25,6 +22,9 @@ import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.SOURCE; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + /** * Denotes that the annotated element requires (or may require) one or more permissions. *

@@ -55,7 +55,8 @@ import static java.lang.annotation.RetentionPolicy.SOURCE; *

* When specified on a parameter, the annotation indicates that the method requires * a permission which depends on the value of the parameter. For example, consider - * {@link android.app.Activity#startActivity(android.content.Intent)}: + * {@link android.app.Activity#startActivity(android.content.Intent) + * Activity#startActivity(Intent)}: *

{@code
  *   public void startActivity(@RequiresPermission Intent intent) { ... }
  * }
diff --git a/media/Android.bp b/media/Android.bp index 43635684d9b39..423d342027311 100644 --- a/media/Android.bp +++ b/media/Android.bp @@ -26,7 +26,8 @@ java_library { installable: true, - // Make sure that the implementaion only relies on SDK or system APIs. + // TODO: build against stable API surface. Use core_platform for now to avoid + // link-check failure with exoplayer building against "current". sdk_version: "core_platform", libs: [ // The order matters. android_system_* library should come later. @@ -94,4 +95,5 @@ java_library { name: "framework_media_annotation", srcs: [":framework-media-annotation-srcs"], installable: false, + sdk_version: "core_current", }