diff --git a/patches_platform/frameworks_base/0015-Spoof-product-name-for-Google-Play-Services.patch b/patches_platform/frameworks_base/0015-Spoof-product-name-for-Google-Play-Services.patch deleted file mode 100644 index 0f899d7..0000000 --- a/patches_platform/frameworks_base/0015-Spoof-product-name-for-Google-Play-Services.patch +++ /dev/null @@ -1,113 +0,0 @@ -From db27d27f48658841c6a74e55f543f417ddb16e76 Mon Sep 17 00:00:00 2001 -From: Danny Lin -Date: Mon, 11 Oct 2021 19:59:51 -0700 -Subject: [PATCH 15/22] Spoof product name for Google Play Services - -NB: This code is under the gmscompat package, but it does not depend on -any code from gmscompat. - -Change-Id: Ic018c0d7abe4573143c3b92301a2625b91e6673a ---- - core/java/android/app/Instrumentation.java | 4 ++ - .../internal/gmscompat/AttestationHooks.java | 60 +++++++++++++++++++ - 2 files changed, 64 insertions(+) - create mode 100644 core/java/com/android/internal/gmscompat/AttestationHooks.java - -diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java -index 556058b567f9..44449588bbab 100644 ---- a/core/java/android/app/Instrumentation.java -+++ b/core/java/android/app/Instrumentation.java -@@ -57,6 +57,8 @@ import android.view.WindowManagerGlobal; - - import com.android.internal.content.ReferrerIntent; - -+import com.android.internal.gmscompat.AttestationHooks; -+ - import java.io.File; - import java.lang.annotation.Retention; - import java.lang.annotation.RetentionPolicy; -@@ -1242,6 +1244,7 @@ public class Instrumentation { - Application app = getFactory(context.getPackageName()) - .instantiateApplication(cl, className); - app.attach(context); -+ AttestationHooks.initApplicationBeforeOnCreate(app); - return app; - } - -@@ -1259,6 +1262,7 @@ public class Instrumentation { - ClassNotFoundException { - Application app = (Application)clazz.newInstance(); - app.attach(context); -+ AttestationHooks.initApplicationBeforeOnCreate(app); - return app; - } - -diff --git a/core/java/com/android/internal/gmscompat/AttestationHooks.java b/core/java/com/android/internal/gmscompat/AttestationHooks.java -new file mode 100644 -index 000000000000..55db97dc28a1 ---- /dev/null -+++ b/core/java/com/android/internal/gmscompat/AttestationHooks.java -@@ -0,0 +1,60 @@ -+/* -+ * Copyright (C) 2021 The Android Open Source Project -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+package com.android.internal.gmscompat; -+ -+import android.app.Application; -+import android.os.Build; -+import android.os.SystemProperties; -+import android.util.Log; -+ -+import java.lang.reflect.Field; -+ -+/** @hide */ -+public final class AttestationHooks { -+ private static final String TAG = "GmsCompat/Attestation"; -+ -+ private static final String PACKAGE_GMS = "com.google.android.gms"; -+ -+ private AttestationHooks() { } -+ -+ private static void setBuildField(String key, String value) { -+ try { -+ // Unlock -+ Field field = Build.class.getDeclaredField(key); -+ field.setAccessible(true); -+ -+ // Edit -+ field.set(null, value); -+ -+ // Lock -+ field.setAccessible(false); -+ } catch (NoSuchFieldException | IllegalAccessException e) { -+ Log.e(TAG, "Failed to spoof Build." + key, e); -+ } -+ } -+ -+ private static void spoofBuildGms() { -+ // Alter model name to avoid hardware attestation enforcement -+ setBuildField("MODEL", "Pixel 5a"); -+ } -+ -+ public static void initApplicationBeforeOnCreate(Application app) { -+ if (PACKAGE_GMS.equals(app.getPackageName())) { -+ spoofBuildGms(); -+ } -+ } -+} --- -2.34.1 -