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

Commit 06fcabde authored by Jared Duke's avatar Jared Duke Committed by Android Build Cherrypicker Worker
Browse files

Clean up reflection-related services keep rules

Prefer using annotations (@UsesReflection + @UsedByReflection) for
various classes that are instantiated via reflection in system server.
The auto-generated keep rules are comparable to the existing ones, but
are easier to maintain and more targeted.

Test: m + diff services.jar for equivalent output
Bug: 210510433
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5123eb381d98efcd93a8bd775e1107809efb1075)
Merged-In: I306b4533f723ee7fafba1de12d7fe446544f8ce7
Change-Id: I306b4533f723ee7fafba1de12d7fe446544f8ce7
parent 11564060
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@ java_library {
        "app-compat-annotations",
        "app-compat-annotations",
        "error_prone_annotations",
        "error_prone_annotations",
        "framework",
        "framework",
        "keepanno-annotations",
        "services.core",
        "services.core",
        "unsupportedappusage",
        "unsupportedappusage",
    ],
    ],
+4 −0
Original line number Original line Diff line number Diff line
@@ -130,6 +130,8 @@ import com.android.server.AppSchedulingModuleThread;
import com.android.server.LocalServices;
import com.android.server.LocalServices;
import com.android.server.pm.pkg.AndroidPackage;
import com.android.server.pm.pkg.AndroidPackage;
import com.android.server.usage.AppIdleHistory.AppUsageHistory;
import com.android.server.usage.AppIdleHistory.AppUsageHistory;
import com.android.tools.r8.keepanno.annotations.KeepItemKind;
import com.android.tools.r8.keepanno.annotations.UsedByReflection;


import libcore.util.EmptyArray;
import libcore.util.EmptyArray;


@@ -588,6 +590,8 @@ public class AppStandbyController
        }
        }
    }
    }


    // This constructor is reflectively invoked from framework code in AppStandbyInternal.
    @UsedByReflection(kind = KeepItemKind.CLASS_AND_METHODS)
    public AppStandbyController(Context context) {
    public AppStandbyController(Context context) {
        this(new Injector(context, AppSchedulingModuleThread.get().getLooper()));
        this(new Injector(context, AppSchedulingModuleThread.get().getLooper()));
    }
    }
+1 −0
Original line number Original line Diff line number Diff line
@@ -239,6 +239,7 @@ java_library {
    libs: [
    libs: [
        "android.hidl.manager-V1.0-java",
        "android.hidl.manager-V1.0-java",
        "framework-tethering.stubs.module_lib",
        "framework-tethering.stubs.module_lib",
        "keepanno-annotations",
        "service-art.stubs.system_server",
        "service-art.stubs.system_server",
        "service-permission.stubs.system_server",
        "service-permission.stubs.system_server",
        "service-rkp.stubs.system_server",
        "service-rkp.stubs.system_server",
+1 −0
Original line number Original line Diff line number Diff line
@@ -182,6 +182,7 @@ java_library_static {
        "android.hardware.vibrator-V2-java",
        "android.hardware.vibrator-V2-java",
        "app-compat-annotations",
        "app-compat-annotations",
        "framework-tethering.stubs.module_lib",
        "framework-tethering.stubs.module_lib",
        "keepanno-annotations",
        "service-art.stubs.system_server",
        "service-art.stubs.system_server",
        "service-permission.stubs.system_server",
        "service-permission.stubs.system_server",
        "service-rkp.stubs.system_server",
        "service-rkp.stubs.system_server",
+11 −1
Original line number Original line Diff line number Diff line
@@ -25,6 +25,10 @@ import android.util.ArrayMap;
import android.util.Slog;
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
import android.util.proto.ProtoOutputStream;


import com.android.tools.r8.keepanno.annotations.KeepItemKind;
import com.android.tools.r8.keepanno.annotations.KeepTarget;
import com.android.tools.r8.keepanno.annotations.UsesReflection;

import java.io.PrintWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Collections;
@@ -41,7 +45,13 @@ public class RankingHelper {
    private final Context mContext;
    private final Context mContext;
    private final RankingHandler mRankingHandler;
    private final RankingHandler mRankingHandler;



    @UsesReflection(
            value = {
                @KeepTarget(
                        kind = KeepItemKind.CLASS_AND_MEMBERS,
                        instanceOfClassConstantExclusive = NotificationSignalExtractor.class,
                        methodName = "<init>")
            })
    public RankingHelper(Context context, RankingHandler rankingHandler, RankingConfig config,
    public RankingHelper(Context context, RankingHandler rankingHandler, RankingConfig config,
            ZenModeHelper zenHelper, NotificationUsageStats usageStats, String[] extractorNames) {
            ZenModeHelper zenHelper, NotificationUsageStats usageStats, String[] extractorNames) {
        mContext = context;
        mContext = context;
Loading