From f2fae9f4162529c8c106a64201e508338e0368bf Mon Sep 17 00:00:00 2001 From: Andy CrossGate Yan Date: Mon, 13 Apr 2020 11:04:11 +0000 Subject: [PATCH] Major overhaul More automation, less manual steps Credits to @Magendanz for many of the ideas! --- README.md | 27 + buildbot_treble.sh | 106 ++ manifest.xml | 9 + ...0001-Disable-vendor-mismatch-warning.patch | 40 + ...ase-system-partition-size-for-arm_ab.patch | 24 + ...Invert-per-app-stretch-to-fullscreen.patch | 103 ++ patches/0001-Remove-fsck-SELinux-labels.patch | 29 + ...hed-revert-of-LOS-FOD-implementation.patch | 969 ++++++++++++++++++ ...init.treble-environ.rc-hardcode-for-.patch | 25 + ...-layout-tuning-via-sysui_nav_bar-tun.patch | 40 + .../0001-build-Don-t-handle-apns-conf.patch | 62 ++ ...ong-Disable-generated_kernel_headers.patch | 47 + .../0001-core-Add-support-for-MicroG.patch | 106 ++ ...-dependency-on-generated-kernel-head.patch | 40 + ...Invert-per-app-stretch-to-fullscreen.patch | 26 + patches/0001-treble-Add-overlay-lineage.patch | 117 +++ ...ecify-config_wallpaperCropperPackage.patch | 25 + ...og-privapp-permissions-whitelist-vio.patch | 30 + 18 files changed, 1825 insertions(+) create mode 100644 README.md create mode 100755 buildbot_treble.sh create mode 100644 manifest.xml create mode 100644 patches/0001-Disable-vendor-mismatch-warning.patch create mode 100644 patches/0001-Increase-system-partition-size-for-arm_ab.patch create mode 100644 patches/0001-LineageParts-Invert-per-app-stretch-to-fullscreen.patch create mode 100644 patches/0001-Remove-fsck-SELinux-labels.patch create mode 100644 patches/0001-Squashed-revert-of-LOS-FOD-implementation.patch create mode 100644 patches/0001-TEMP-treble-Fix-init.treble-environ.rc-hardcode-for-.patch create mode 100644 patches/0001-UI-Revive-navbar-layout-tuning-via-sysui_nav_bar-tun.patch create mode 100644 patches/0001-build-Don-t-handle-apns-conf.patch create mode 100644 patches/0001-build_soong-Disable-generated_kernel_headers.patch create mode 100644 patches/0001-core-Add-support-for-MicroG.patch create mode 100644 patches/0001-cryptfshw-Remove-dependency-on-generated-kernel-head.patch create mode 100644 patches/0001-sdk-Invert-per-app-stretch-to-fullscreen.patch create mode 100644 patches/0001-treble-Add-overlay-lineage.patch create mode 100644 patches/0001-treble-Don-t-specify-config_wallpaperCropperPackage.patch create mode 100644 patches/0001-vendor_lineage-Log-privapp-permissions-whitelist-vio.patch diff --git a/README.md b/README.md new file mode 100644 index 0000000..963f725 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ + +## Building PHH-based LineageOS GSIs ## + +To get started with building LineageOS GSI, you'll need to get familiar with [Git and Repo](https://source.android.com/source/using-repo.html) as well as [How to build a GSI](https://github.com/phhusson/treble_experimentations/wiki/How-to-build-a-GSI%3F). + +First, open a new Terminal window, which defaults to your home directory. Clone the modified treble_experimentations repo there: + + git clone https://github.com/AndyCGYan/treble_experimentations + +Create a new working directory for your LineageOS build and navigate to it: + + mkdir lineage-17.x-build-gsi; cd lineage-17.x-build-gsi + +Initialize your LineageOS workspace: + + repo init -u https://github.com/LineageOS/android.git -b lineage-17.1 + +Clone the modified treble patches and this repo: + + git clone https://github.com/AndyCGYan/treble_patches -b lineage-17.1 + git clone https://github.com/AndyCGYan/treble_build_los -b lineage-17.1 + +Finally, start the build script: + + bash treble_build_los/buildbot_treble.sh + +Be sure to update the cloned repos from time to time! \ No newline at end of file diff --git a/buildbot_treble.sh b/buildbot_treble.sh new file mode 100755 index 0000000..b6ce650 --- /dev/null +++ b/buildbot_treble.sh @@ -0,0 +1,106 @@ +#!/bin/bash +echo "" +echo "LineageOS 17.x Treble Buildbot" +echo "ATTENTION: this script syncs repo on each run" +echo "Executing in 5 seconds - CTRL-C to exit" +echo "" +sleep 5 + +START=`date +%s` +BUILD_DATE="$(date +%Y%m%d)" +BL=$PWD/treble_build_los + +echo "Preparing local manifest" +mkdir -p .repo/local_manifests +cp $BL/manifest.xml .repo/local_manifests/manifest.xml +echo "" + +echo "Syncing repos" +repo sync -c --force-sync --no-clone-bundle --no-tags -j$(nproc --all) +echo "" + +echo "Setting up build environment" +source build/envsetup.sh &> /dev/null +echo "" + +echo "Applying PHH patches" +cd frameworks/base +git am $BL/patches/0001-Squashed-revert-of-LOS-FOD-implementation.patch +cd ../.. +rm -f device/*/sepolicy/common/private/genfs_contexts +cd device/phh/treble +git clean -fdx +bash generate.sh lineage +cd ../../.. +bash ~/treble_experimentations/apply-patches.sh treble_patches +echo "" + +echo "Applying universal patches" +cd frameworks/base +git am $BL/patches/0001-UI-Revive-navbar-layout-tuning-via-sysui_nav_bar-tun.patch +git am $BL/patches/0001-Disable-vendor-mismatch-warning.patch +git am $BL/patches/0001-core-Add-support-for-MicroG.patch +cd ../.. +cd lineage-sdk +git am $BL/patches/0001-sdk-Invert-per-app-stretch-to-fullscreen.patch +cd .. +cd packages/apps/LineageParts +git am $BL/patches/0001-LineageParts-Invert-per-app-stretch-to-fullscreen.patch +cd ../../.. +cd vendor/lineage +git am $BL/patches/0001-vendor_lineage-Log-privapp-permissions-whitelist-vio.patch +cd ../.. +echo "" + +echo "Applying GSI-specific patches" +cd build/make +git am $BL/patches/0001-build-Don-t-handle-apns-conf.patch +cd ../.. +cd device/phh/treble +git revert 82b15278bad816632dcaeaed623b569978e9840d --no-edit # Update lineage.mk for LineageOS 16.0 +git am $BL/patches/0001-Remove-fsck-SELinux-labels.patch +git am $BL/patches/0001-treble-Add-overlay-lineage.patch +git am $BL/patches/0001-treble-Don-t-specify-config_wallpaperCropperPackage.patch +git am $BL/patches/0001-Increase-system-partition-size-for-arm_ab.patch +git am $BL/patches/0001-TEMP-treble-Fix-init.treble-environ.rc-hardcode-for-.patch +cd ../../.. +cd external/tinycompress +git revert 82c8fbf6d3fb0a017026b675adf2cee3f994e08a --no-edit # tinycompress: Use generated kernel headers +cd ../.. +cd hardware/lineage/interfaces +git am $BL/patches/0001-cryptfshw-Remove-dependency-on-generated-kernel-head.patch +cd ../../.. +cd vendor/lineage +git am $BL/patches/0001-build_soong-Disable-generated_kernel_headers.patch +cd ../.. +echo "" + +echo "CHECK PATCH STATUS NOW!" +sleep 5 +echo "" + +export WITHOUT_CHECK_API=true +export WITH_SU=true +mkdir -p ~/build-output/ + +buildVariant() { + lunch ${1}-userdebug + make installclean + make -j$(nproc --all) systemimage + make vndk-test-sepolicy + mv $OUT/system.img ~/build-output/lineage-17.1-$BUILD_DATE-UNOFFICIAL-${1}.img +} + +buildVariant treble_arm_avN +buildVariant treble_arm_bvN +buildVariant treble_a64_avN +buildVariant treble_a64_bvN +buildVariant treble_arm64_avN +buildVariant treble_arm64_bvN +ls ~/build-output | grep 'lineage' + +END=`date +%s` +ELAPSEDM=$(($(($END-$START))/60)) +ELAPSEDS=$(($(($END-$START))-$ELAPSEDM*60)) +echo "Buildbot completed in $ELAPSEDM minutes and $ELAPSEDS seconds" +echo "" diff --git a/manifest.xml b/manifest.xml new file mode 100644 index 0000000..69486a9 --- /dev/null +++ b/manifest.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/patches/0001-Disable-vendor-mismatch-warning.patch b/patches/0001-Disable-vendor-mismatch-warning.patch new file mode 100644 index 0000000..d5acc63 --- /dev/null +++ b/patches/0001-Disable-vendor-mismatch-warning.patch @@ -0,0 +1,40 @@ +From 9b907d3b202fd3f7a892b50eacd92e4d51877606 Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Thu, 5 Apr 2018 10:01:19 +0800 +Subject: [PATCH] Disable vendor mismatch warning + +Change-Id: Ieb8fe91e2f02462f074312ed0f4885d183e9780b +--- + .../server/wm/ActivityTaskManagerService.java | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +index ef02fd52999..b6bccb1c21c 100644 +--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java ++++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +@@ -6486,20 +6486,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { + } + + if (!Build.isBuildConsistent()) { +- Slog.e(TAG, "Build fingerprint is not consistent, warning user"); +- mUiHandler.post(() -> { +- if (mShowDialogs) { +- AlertDialog d = new BaseErrorDialog(mUiContext); +- d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR); +- d.setCancelable(false); +- d.setTitle(mUiContext.getText(R.string.android_system_label)); +- d.setMessage(mUiContext.getText(R.string.system_error_manufacturer)); +- d.setButton(DialogInterface.BUTTON_POSITIVE, +- mUiContext.getText(R.string.ok), +- mUiHandler.obtainMessage(DISMISS_DIALOG_UI_MSG, d)); +- d.show(); +- } +- }); ++ Slog.e(TAG, "Build fingerprint is not consistent"); ++ // Do not emit warning about vendor mismatch + } + } + } +-- +2.17.1 + diff --git a/patches/0001-Increase-system-partition-size-for-arm_ab.patch b/patches/0001-Increase-system-partition-size-for-arm_ab.patch new file mode 100644 index 0000000..8094981 --- /dev/null +++ b/patches/0001-Increase-system-partition-size-for-arm_ab.patch @@ -0,0 +1,24 @@ +From 037c36f36b8f71bd2001c30285bcfcd6523973b0 Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Wed, 4 Sep 2019 01:37:30 +0000 +Subject: [PATCH] Increase system partition size for arm_ab + +Change-Id: I3ac099dd64624ec27c5fb64ce3fa3a9e500402e5 +--- + phhgsi_arm_ab/BoardConfig.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/phhgsi_arm_ab/BoardConfig.mk b/phhgsi_arm_ab/BoardConfig.mk +index 18aaace..5726959 100644 +--- a/phhgsi_arm_ab/BoardConfig.mk ++++ b/phhgsi_arm_ab/BoardConfig.mk +@@ -2,5 +2,5 @@ include build/make/target/board/generic_arm_ab/BoardConfig.mk + include device/phh/treble/board-base.mk + + ifeq ($(BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE),) +-BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1073741824 ++BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1313583104 + endif +-- +2.17.1 + diff --git a/patches/0001-LineageParts-Invert-per-app-stretch-to-fullscreen.patch b/patches/0001-LineageParts-Invert-per-app-stretch-to-fullscreen.patch new file mode 100644 index 0000000..bce9b43 --- /dev/null +++ b/patches/0001-LineageParts-Invert-per-app-stretch-to-fullscreen.patch @@ -0,0 +1,103 @@ +From 2da980250f13f6bec288b921be1ad6a57549b1fc Mon Sep 17 00:00:00 2001 +From: AndyCGYan +Date: Sun, 13 Jan 2019 21:44:48 +0800 +Subject: [PATCH] LineageParts: Invert per-app stretch-to-fullscreen + +Change-Id: Icb02c8dfd84882f736e37d6cd92c35e5eb288faa +--- + res/layout/long_screen_layout.xml | 2 +- + res/values-zh-rCN/strings.xml | 4 ++-- + res/values/strings.xml | 6 +++--- + res/xml/long_screen_prefs.xml | 2 +- + res/xml/parts_catalog.xml | 4 ++-- + .../lineageparts/applications/LongScreenSettings.java | 2 +- + 6 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/res/layout/long_screen_layout.xml b/res/layout/long_screen_layout.xml +index 40d0938..1119cef 100644 +--- a/res/layout/long_screen_layout.xml ++++ b/res/layout/long_screen_layout.xml +@@ -36,7 +36,7 @@ + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" +- android:text="@string/long_screen_settings_no_apps" ++ android:text="@string/inverse_long_screen_settings_no_apps" + android:textSize="18dp" + android:visibility="gone" /> + +diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml +index b518ff4..6ca9adb 100644 +--- a/res/values-zh-rCN/strings.xml ++++ b/res/values-zh-rCN/strings.xml +@@ -469,8 +469,8 @@ + 隐藏导航栏 + 同时隐藏 + 关闭开关以自定义您每个应用的扩展桌面 +- 全屏应用 +- 强制旧式应用程序使用全屏长宽比 ++ 禁用拉伸全屏 ++ 对选定的应用禁用拉伸全屏 + 充电提示音 + 启用 + 连接或断开电源时发出声音 +diff --git a/res/values/strings.xml b/res/values/strings.xml +index 418b478..2ae06e7 100644 +--- a/res/values/strings.xml ++++ b/res/values/strings.xml +@@ -579,9 +579,9 @@ + Never + + +- Full screen apps +- Force legacy apps to use full screen aspect ratio +- No apps ++ Disable stretch-to-fullscreen ++ Prevent selected apps from utilizing stretch-to-fullscreen ++ No apps + + + Charging sounds +diff --git a/res/xml/long_screen_prefs.xml b/res/xml/long_screen_prefs.xml +index ec947fa..20da90a 100644 +--- a/res/xml/long_screen_prefs.xml ++++ b/res/xml/long_screen_prefs.xml +@@ -18,6 +18,6 @@ + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:lineage="http://schemas.android.com/apk/res/org.lineageos.lineageparts" + android:key="long_screen_settings" +- android:title="@string/long_screen_settings_title"> ++ android:title="@string/inverse_long_screen_settings_title"> + + +diff --git a/res/xml/parts_catalog.xml b/res/xml/parts_catalog.xml +index a4346c7..e21d7d5 100644 +--- a/res/xml/parts_catalog.xml ++++ b/res/xml/parts_catalog.xml +@@ -92,8 +92,8 @@ + lineage:xmlRes="@xml/perf_profile_settings" /> + + + +diff --git a/src/org/lineageos/lineageparts/applications/LongScreenSettings.java b/src/org/lineageos/lineageparts/applications/LongScreenSettings.java +index ac04058..50ff8f6 100644 +--- a/src/org/lineageos/lineageparts/applications/LongScreenSettings.java ++++ b/src/org/lineageos/lineageparts/applications/LongScreenSettings.java +@@ -246,7 +246,7 @@ public class LongScreenSettings extends SettingsPreferenceFragment + mApplicationsState.ensureIcon(entry); + holder.icon.setImageDrawable(entry.icon); + holder.state.setTag(entry); +- holder.state.setChecked(mLongScreen.shouldForceLongScreen(entry.info.packageName)); ++ holder.state.setChecked(!(mLongScreen.shouldForceLongScreen(entry.info.packageName))); + return holder.rootView; + } + +-- +2.17.1 + diff --git a/patches/0001-Remove-fsck-SELinux-labels.patch b/patches/0001-Remove-fsck-SELinux-labels.patch new file mode 100644 index 0000000..72d7935 --- /dev/null +++ b/patches/0001-Remove-fsck-SELinux-labels.patch @@ -0,0 +1,29 @@ +From 3fb27b3b3ab30a86432d2ca1f8fe5c3802793866 Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Wed, 23 Oct 2019 09:38:16 +0000 +Subject: [PATCH] Remove fsck SELinux labels + +These are covered by LOS sepolicy + +Change-Id: I7c63c9aed39afc07b8c80918053154113f848cd9 +--- + sepolicy/file_contexts | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts +index 6da14ac..dfea075 100644 +--- a/sepolicy/file_contexts ++++ b/sepolicy/file_contexts +@@ -6,9 +6,6 @@ + /system/bin/phh-on-data.sh u:object_r:phhsu_exec:s0 + /system/bin/asus-motor u:object_r:phhsu_exec:s0 + +-#/system/bin/fsck\.exfat u:object_r:fsck_exec:s0 +-/system/bin/fsck\.ntfs u:object_r:fsck_exec:s0 +- + /bt_firmware(/.*)? u:object_r:bt_firmware_file:s0 + + /sec_storage(/.*)? u:object_r:teecd_data_file:s0 +-- +2.17.1 + diff --git a/patches/0001-Squashed-revert-of-LOS-FOD-implementation.patch b/patches/0001-Squashed-revert-of-LOS-FOD-implementation.patch new file mode 100644 index 0000000..76c4ae3 --- /dev/null +++ b/patches/0001-Squashed-revert-of-LOS-FOD-implementation.patch @@ -0,0 +1,969 @@ +From 16b05029ca5f14a5c881eccfc57f07738fc64d8a Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Wed, 5 Feb 2020 02:24:44 +0000 +Subject: [PATCH] Squashed revert of LOS FOD implementation + +Better than having an ever-growing string of revert commands? + +Change-Id: Ifbcd5ff44c97e536fd2e417deadc2b08773b7b5e +--- + .../internal/statusbar/IStatusBar.aidl | 3 - + .../internal/statusbar/IStatusBarService.aidl | 3 - + packages/SystemUI/Android.bp | 2 - + .../res/drawable/fod_icon_default.xml | 25 - + packages/SystemUI/res/values/config.xml | 1 - + .../SystemUI/res/values/lineage_config.xml | 4 - + .../systemui/biometrics/FODCircleView.java | 430 ------------------ + .../biometrics/FODCircleViewImpl.java | 62 --- + .../systemui/statusbar/CommandQueue.java | 28 -- + services/core/Android.bp | 1 - + .../biometrics/BiometricServiceBase.java | 2 +- + .../fingerprint/FingerprintService.java | 112 ----- + .../statusbar/StatusBarManagerService.java | 22 - + 13 files changed, 1 insertion(+), 694 deletions(-) + delete mode 100644 packages/SystemUI/res/drawable/fod_icon_default.xml + delete mode 100644 packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java + delete mode 100644 packages/SystemUI/src/com/android/systemui/biometrics/FODCircleViewImpl.java + +diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl +index 4b1f665e31a..fd79729306e 100644 +--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl ++++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl +@@ -162,9 +162,6 @@ oneway interface IStatusBar + void onBiometricError(String error); + // Used to hide the biometric dialog when the AuthenticationClient is stopped + void hideBiometricDialog(); +- // Used to show or hide in display fingerprint view +- void showInDisplayFingerprintView(); +- void hideInDisplayFingerprintView(); + // Used to block or unblock usage of gestural navigation + void setBlockedGesturalNavigation(boolean blocked); + +diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl +index d1d44d1ad60..07b0c6eecdf 100644 +--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl ++++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl +@@ -110,9 +110,6 @@ interface IStatusBarService + void onBiometricError(String error); + // Used to hide the biometric dialog when the AuthenticationClient is stopped + void hideBiometricDialog(); +- // Used to show or hide in display fingerprint view +- void showInDisplayFingerprintView(); +- void hideInDisplayFingerprintView(); + // Used to block or unblock usage of gestural navigation + void setBlockedGesturalNavigation(boolean blocked); + } +diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp +index 99f2e5b7301..7f5f9cb8ae7 100644 +--- a/packages/SystemUI/Android.bp ++++ b/packages/SystemUI/Android.bp +@@ -65,7 +65,6 @@ android_library { + "dagger2-2.19", + "jsr330", + "org.lineageos.platform.internal", +- "vendor.lineage.biometrics.fingerprint.inscreen-V1.0-java", + ], + manifest: "AndroidManifest.xml", + additional_manifests: ["LineageManifest.xml"], +@@ -124,7 +123,6 @@ android_library { + "dagger2-2.19", + "jsr330", + "org.lineageos.platform.internal", +- "vendor.lineage.biometrics.fingerprint.inscreen-V1.0-java", + ], + libs: [ + "android.test.runner", +diff --git a/packages/SystemUI/res/drawable/fod_icon_default.xml b/packages/SystemUI/res/drawable/fod_icon_default.xml +deleted file mode 100644 +index 38e9d311128..00000000000 +--- a/packages/SystemUI/res/drawable/fod_icon_default.xml ++++ /dev/null +@@ -1,25 +0,0 @@ +- +- +- +- +- +diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml +index 82b6932e5b0..2d794c0aa99 100644 +--- a/packages/SystemUI/res/values/config.xml ++++ b/packages/SystemUI/res/values/config.xml +@@ -292,7 +292,6 @@ + com.android.systemui.globalactions.GlobalActionsComponent + com.android.systemui.ScreenDecorations + com.android.systemui.biometrics.BiometricDialogImpl +- com.android.systemui.biometrics.FODCircleViewImpl + com.android.systemui.SliceBroadcastRelayHandler + com.android.systemui.SizeCompatModeActivityController + com.android.systemui.statusbar.notification.InstantAppNotifier +diff --git a/packages/SystemUI/res/values/lineage_config.xml b/packages/SystemUI/res/values/lineage_config.xml +index fd732a7127a..e520306aa78 100644 +--- a/packages/SystemUI/res/values/lineage_config.xml ++++ b/packages/SystemUI/res/values/lineage_config.xml +@@ -23,10 +23,6 @@ + --> + 53 + +- +- #00ff00 +- #20000000 +- + + 4 + 5 +diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java b/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java +deleted file mode 100644 +index 0af62b731b9..00000000000 +--- a/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java ++++ /dev/null +@@ -1,430 +0,0 @@ +-/** +- * Copyright (C) 2019 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.systemui.biometrics; +- +-import android.content.Context; +-import android.content.res.Configuration; +-import android.content.res.Resources; +-import android.graphics.Canvas; +-import android.graphics.Color; +-import android.graphics.Paint; +-import android.graphics.PixelFormat; +-import android.graphics.Point; +-import android.os.Handler; +-import android.os.Looper; +-import android.os.RemoteException; +-import android.provider.Settings; +-import android.view.Display; +-import android.view.Gravity; +-import android.view.MotionEvent; +-import android.view.Surface; +-import android.view.View; +-import android.view.WindowManager; +-import android.widget.ImageView; +- +-import com.android.keyguard.KeyguardUpdateMonitor; +-import com.android.keyguard.KeyguardUpdateMonitorCallback; +-import com.android.systemui.R; +- +-import vendor.lineage.biometrics.fingerprint.inscreen.V1_0.IFingerprintInscreen; +-import vendor.lineage.biometrics.fingerprint.inscreen.V1_0.IFingerprintInscreenCallback; +- +-import java.util.NoSuchElementException; +-import java.util.Timer; +-import java.util.TimerTask; +- +-public class FODCircleView extends ImageView { +- private final int mPositionX; +- private final int mPositionY; +- private final int mSize; +- private final int mDreamingMaxOffset; +- private final int mNavigationBarSize; +- private final boolean mShouldBoostBrightness; +- private final Paint mPaintFingerprint = new Paint(); +- private final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(); +- private final WindowManager mWindowManager; +- +- private IFingerprintInscreen mFingerprintInscreenDaemon; +- +- private int mDreamingOffsetX; +- private int mDreamingOffsetY; +- +- private int mColor; +- private int mColorBackground; +- +- private boolean mIsBouncer; +- private boolean mIsDreaming; +- private boolean mIsShowing; +- private boolean mIsCircleShowing; +- +- private float mCurrentDimAmount = 0.0f; +- +- private Handler mHandler; +- +- private Timer mBurnInProtectionTimer; +- +- private IFingerprintInscreenCallback mFingerprintInscreenCallback = +- new IFingerprintInscreenCallback.Stub() { +- @Override +- public void onFingerDown() { +- mHandler.post(() -> showCircle()); +- } +- +- @Override +- public void onFingerUp() { +- mHandler.post(() -> hideCircle()); +- } +- }; +- +- private KeyguardUpdateMonitor mUpdateMonitor; +- +- private KeyguardUpdateMonitorCallback mMonitorCallback = new KeyguardUpdateMonitorCallback() { +- @Override +- public void onDreamingStateChanged(boolean dreaming) { +- mIsDreaming = dreaming; +- updateAlpha(); +- +- if (dreaming) { +- mBurnInProtectionTimer = new Timer(); +- mBurnInProtectionTimer.schedule(new BurnInProtectionTask(), 0, 60 * 1000); +- } else if (mBurnInProtectionTimer != null) { +- mBurnInProtectionTimer.cancel(); +- } +- } +- +- @Override +- public void onKeyguardBouncerChanged(boolean isBouncer) { +- mIsBouncer = isBouncer; +- +- if (isBouncer) { +- hide(); +- } else if (mUpdateMonitor.isFingerprintDetectionRunning()) { +- show(); +- } +- } +- +- @Override +- public void onScreenTurnedOff() { +- hide(); +- } +- +- @Override +- public void onScreenTurnedOn() { +- if (mUpdateMonitor.isFingerprintDetectionRunning()) { +- show(); +- } +- } +- }; +- +- public FODCircleView(Context context) { +- super(context); +- +- setScaleType(ScaleType.CENTER); +- +- IFingerprintInscreen daemon = getFingerprintInScreenDaemon(); +- if (daemon == null) { +- throw new RuntimeException("Unable to get IFingerprintInscreen"); +- } +- +- try { +- mShouldBoostBrightness = daemon.shouldBoostBrightness(); +- mPositionX = daemon.getPositionX(); +- mPositionY = daemon.getPositionY(); +- mSize = daemon.getSize(); +- } catch (RemoteException e) { +- throw new RuntimeException("Failed to retrieve FOD circle position or size"); +- } +- +- Resources res = context.getResources(); +- +- mColor = res.getColor(R.color.config_fodColor); +- mColorBackground = res.getColor(R.color.config_fodColorBackground); +- +- mPaintFingerprint.setAntiAlias(true); +- mPaintFingerprint.setColor(mColorBackground); +- +- mWindowManager = context.getSystemService(WindowManager.class); +- +- mNavigationBarSize = res.getDimensionPixelSize(R.dimen.navigation_bar_size); +- +- mDreamingMaxOffset = (int) (mSize * 0.1f); +- +- mHandler = new Handler(Looper.getMainLooper()); +- +- mParams.height = mSize; +- mParams.width = mSize; +- mParams.format = PixelFormat.TRANSLUCENT; +- +- mParams.setTitle("Fingerprint on display"); +- mParams.packageName = "android"; +- mParams.type = WindowManager.LayoutParams.TYPE_DISPLAY_OVERLAY; +- mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | +- WindowManager.LayoutParams.FLAG_DIM_BEHIND | +- WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; +- mParams.gravity = Gravity.TOP | Gravity.LEFT; +- +- mWindowManager.addView(this, mParams); +- +- updatePosition(); +- hide(); +- +- mUpdateMonitor = KeyguardUpdateMonitor.getInstance(context); +- mUpdateMonitor.registerCallback(mMonitorCallback); +- +- getViewTreeObserver().addOnGlobalLayoutListener(() -> { +- float drawingDimAmount = mParams.dimAmount; +- if (mCurrentDimAmount == 0.0f && drawingDimAmount > 0.0f) { +- dispatchPress(); +- mCurrentDimAmount = drawingDimAmount; +- } else if (mCurrentDimAmount > 0.0f && drawingDimAmount == 0.0f) { +- mCurrentDimAmount = drawingDimAmount; +- } +- }); +- } +- +- @Override +- protected void onDraw(Canvas canvas) { +- canvas.drawCircle(mSize / 2, mSize / 2, mSize / 2.0f, mPaintFingerprint); +- super.onDraw(canvas); +- } +- +- @Override +- public boolean onTouchEvent(MotionEvent event) { +- float x = event.getAxisValue(MotionEvent.AXIS_X); +- float y = event.getAxisValue(MotionEvent.AXIS_Y); +- +- boolean newIsInside = (x > 0 && x < mSize) && (y > 0 && y < mSize); +- +- if (event.getAction() == MotionEvent.ACTION_DOWN && newIsInside) { +- showCircle(); +- return true; +- } else if (event.getAction() == MotionEvent.ACTION_UP) { +- hideCircle(); +- return true; +- } else if (event.getAction() == MotionEvent.ACTION_MOVE) { +- return true; +- } +- +- return false; +- } +- +- @Override +- public void onConfigurationChanged(Configuration newConfig) { +- updatePosition(); +- } +- +- public IFingerprintInscreen getFingerprintInScreenDaemon() { +- if (mFingerprintInscreenDaemon == null) { +- try { +- mFingerprintInscreenDaemon = IFingerprintInscreen.getService(); +- if (mFingerprintInscreenDaemon != null) { +- mFingerprintInscreenDaemon.setCallback(mFingerprintInscreenCallback); +- mFingerprintInscreenDaemon.asBinder().linkToDeath((cookie) -> { +- mFingerprintInscreenDaemon = null; +- }, 0); +- } +- } catch (NoSuchElementException | RemoteException e) { +- // do nothing +- } +- } +- return mFingerprintInscreenDaemon; +- } +- +- public void dispatchPress() { +- IFingerprintInscreen daemon = getFingerprintInScreenDaemon(); +- try { +- daemon.onPress(); +- } catch (RemoteException e) { +- // do nothing +- } +- } +- +- public void dispatchRelease() { +- IFingerprintInscreen daemon = getFingerprintInScreenDaemon(); +- try { +- daemon.onRelease(); +- } catch (RemoteException e) { +- // do nothing +- } +- } +- +- public void dispatchShow() { +- IFingerprintInscreen daemon = getFingerprintInScreenDaemon(); +- try { +- daemon.onShowFODView(); +- } catch (RemoteException e) { +- // do nothing +- } +- } +- +- public void dispatchHide() { +- IFingerprintInscreen daemon = getFingerprintInScreenDaemon(); +- try { +- daemon.onHideFODView(); +- } catch (RemoteException e) { +- // do nothing +- } +- } +- +- public void showCircle() { +- mIsCircleShowing = true; +- +- setKeepScreenOn(true); +- +- setDim(true); +- updateAlpha(); +- +- mPaintFingerprint.setColor(mColor); +- setImageDrawable(null); +- invalidate(); +- } +- +- public void hideCircle() { +- mIsCircleShowing = false; +- +- mPaintFingerprint.setColor(mColorBackground); +- setImageResource(R.drawable.fod_icon_default); +- invalidate(); +- +- dispatchRelease(); +- +- setDim(false); +- updateAlpha(); +- +- setKeepScreenOn(false); +- } +- +- public void show() { +- if (!mUpdateMonitor.isScreenOn()) { +- // Keyguard is shown just after screen turning off +- return; +- } +- +- if (mIsBouncer) { +- // Ignore show calls when Keyguard pin screen is being shown +- return; +- } +- +- mIsShowing = true; +- +- updatePosition(); +- +- dispatchShow(); +- setVisibility(View.VISIBLE); +- } +- +- public void hide() { +- mIsShowing = false; +- +- setVisibility(View.GONE); +- hideCircle(); +- dispatchHide(); +- } +- +- private void updateAlpha() { +- if (mIsCircleShowing) { +- setAlpha(1.0f); +- } else { +- setAlpha(mIsDreaming ? 0.5f : 1.0f); +- } +- } +- +- private void updatePosition() { +- Display defaultDisplay = mWindowManager.getDefaultDisplay(); +- +- Point size = new Point(); +- defaultDisplay.getRealSize(size); +- +- int rotation = defaultDisplay.getRotation(); +- switch (rotation) { +- case Surface.ROTATION_0: +- mParams.x = mPositionX; +- mParams.y = mPositionY; +- break; +- case Surface.ROTATION_90: +- mParams.x = mPositionY; +- mParams.y = mPositionX; +- break; +- case Surface.ROTATION_180: +- mParams.x = mPositionX; +- mParams.y = size.y - mPositionY - mSize; +- break; +- case Surface.ROTATION_270: +- mParams.x = size.x - mPositionY - mSize - mNavigationBarSize; +- mParams.y = mPositionX; +- break; +- default: +- throw new IllegalArgumentException("Unknown rotation: " + rotation); +- } +- +- if (mIsDreaming) { +- mParams.x += mDreamingOffsetX; +- mParams.y += mDreamingOffsetY; +- } +- +- mWindowManager.updateViewLayout(this, mParams); +- } +- +- private void setDim(boolean dim) { +- if (dim) { +- int curBrightness = Settings.System.getInt(getContext().getContentResolver(), +- Settings.System.SCREEN_BRIGHTNESS, 100); +- int dimAmount = 0; +- +- IFingerprintInscreen daemon = getFingerprintInScreenDaemon(); +- try { +- dimAmount = daemon.getDimAmount(curBrightness); +- } catch (RemoteException e) { +- // do nothing +- } +- +- if (mShouldBoostBrightness) { +- mParams.screenBrightness = 1.0f; +- } +- +- mParams.dimAmount = dimAmount / 255.0f; +- } else { +- mParams.screenBrightness = 0.0f; +- mParams.dimAmount = 0.0f; +- } +- +- mWindowManager.updateViewLayout(this, mParams); +- } +- +- private class BurnInProtectionTask extends TimerTask { +- @Override +- public void run() { +- long now = System.currentTimeMillis() / 1000 / 60; +- +- mDreamingOffsetX = (int) (now % (mDreamingMaxOffset * 4)); +- if (mDreamingOffsetX > mDreamingMaxOffset * 2) { +- mDreamingOffsetX = mDreamingMaxOffset * 4 - mDreamingOffsetX; +- } +- +- // Let y to be not synchronized with x, so that we get maximum movement +- mDreamingOffsetY = (int) ((now + mDreamingMaxOffset / 3) % (mDreamingMaxOffset * 2)); +- if (mDreamingOffsetY > mDreamingMaxOffset * 2) { +- mDreamingOffsetY = mDreamingMaxOffset * 4 - mDreamingOffsetY; +- } +- +- mDreamingOffsetX -= mDreamingMaxOffset; +- mDreamingOffsetY -= mDreamingMaxOffset; +- +- mHandler.post(() -> updatePosition()); +- } +- }; +-} +diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleViewImpl.java b/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleViewImpl.java +deleted file mode 100644 +index fb3c07af6a6..00000000000 +--- a/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleViewImpl.java ++++ /dev/null +@@ -1,62 +0,0 @@ +-/** +- * Copyright (C) 2019 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.systemui.biometrics; +- +-import android.content.pm.PackageManager; +-import android.util.Slog; +-import android.view.View; +- +-import com.android.systemui.SystemUI; +-import com.android.systemui.statusbar.CommandQueue; +-import com.android.systemui.statusbar.CommandQueue.Callbacks; +- +-import lineageos.app.LineageContextConstants; +- +-public class FODCircleViewImpl extends SystemUI implements CommandQueue.Callbacks { +- private static final String TAG = "FODCircleViewImpl"; +- +- private FODCircleView mFodCircleView; +- +- @Override +- public void start() { +- PackageManager packageManager = mContext.getPackageManager(); +- if (!packageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT) || +- !packageManager.hasSystemFeature(LineageContextConstants.Features.FOD)) { +- return; +- } +- getComponent(CommandQueue.class).addCallback(this); +- try { +- mFodCircleView = new FODCircleView(mContext); +- } catch (RuntimeException e) { +- Slog.e(TAG, "Failed to initialize FODCircleView", e); +- } +- } +- +- @Override +- public void showInDisplayFingerprintView() { +- if (mFodCircleView != null) { +- mFodCircleView.show(); +- } +- } +- +- @Override +- public void hideInDisplayFingerprintView() { +- if (mFodCircleView != null) { +- mFodCircleView.hide(); +- } +- } +-} +diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +index b99cb2e3116..655dae86303 100644 +--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java ++++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +@@ -116,8 +116,6 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< + private static final int MSG_SHOW_PINNING_TOAST_ENTER_EXIT = 45 << MSG_SHIFT; + private static final int MSG_SHOW_PINNING_TOAST_ESCAPE = 46 << MSG_SHIFT; + private static final int MSG_RECENTS_ANIMATION_STATE_CHANGED = 47 << MSG_SHIFT; +- private static final int MSG_SHOW_IN_DISPLAY_FINGERPRINT_VIEW = 48 << MSG_SHIFT; +- private static final int MSG_HIDE_IN_DISPLAY_FINGERPRINT_VIEW = 49 << MSG_SHIFT; + private static final int MSG_SET_BLOCKED_GESTURAL_NAVIGATION = 50 << MSG_SHIFT; + + public static final int FLAG_EXCLUDE_NONE = 0; +@@ -280,8 +278,6 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< + default void onBiometricHelp(String message) { } + default void onBiometricError(String error) { } + default void hideBiometricDialog() { } +- default void showInDisplayFingerprintView() { } +- default void hideInDisplayFingerprintView() { } + default void setBlockedGesturalNavigation(boolean blocked) {} + + /** +@@ -791,20 +787,6 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< + } + } + +- @Override +- public void showInDisplayFingerprintView() { +- synchronized (mLock) { +- mHandler.obtainMessage(MSG_SHOW_IN_DISPLAY_FINGERPRINT_VIEW).sendToTarget(); +- } +- } +- +- @Override +- public void hideInDisplayFingerprintView() { +- synchronized (mLock) { +- mHandler.obtainMessage(MSG_HIDE_IN_DISPLAY_FINGERPRINT_VIEW).sendToTarget(); +- } +- } +- + @Override + public void setBlockedGesturalNavigation(boolean blocked) { + synchronized (mLock) { +@@ -1119,16 +1101,6 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< + mCallbacks.get(i).onRecentsAnimationStateChanged(msg.arg1 > 0); + } + break; +- case MSG_SHOW_IN_DISPLAY_FINGERPRINT_VIEW: +- for (int i = 0; i < mCallbacks.size(); i++) { +- mCallbacks.get(i).showInDisplayFingerprintView(); +- } +- break; +- case MSG_HIDE_IN_DISPLAY_FINGERPRINT_VIEW: +- for (int i = 0; i < mCallbacks.size(); i++) { +- mCallbacks.get(i).hideInDisplayFingerprintView(); +- } +- break; + case MSG_SET_BLOCKED_GESTURAL_NAVIGATION: + for (int i = 0; i < mCallbacks.size(); i++) { + mCallbacks.get(i).setBlockedGesturalNavigation((Boolean) msg.obj); +diff --git a/services/core/Android.bp b/services/core/Android.bp +index 6edd33c8d35..ee26710cf7b 100644 +--- a/services/core/Android.bp ++++ b/services/core/Android.bp +@@ -55,7 +55,6 @@ java_library_static { + "dnsresolver_aidl_interface-V2-java", + "netd_aidl_interface-V2-java", + "netd_event_listener_interface-java", +- "vendor.lineage.biometrics.fingerprint.inscreen-V1.0-java", + ], + } + +diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java +index 148cf747911..37a08de62fc 100644 +--- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java ++++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java +@@ -1016,7 +1016,7 @@ public abstract class BiometricServiceBase extends SystemService + /** + * @return true if this is keyguard package + */ +- protected boolean isKeyguard(String clientPackage) { ++ private boolean isKeyguard(String clientPackage) { + return mKeyguardPackage.equals(clientPackage); + } + +diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java +index 2159f6f2f86..320e1022873 100644 +--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java ++++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java +@@ -75,17 +75,12 @@ import org.json.JSONArray; + import org.json.JSONException; + import org.json.JSONObject; + +-import lineageos.app.LineageContextConstants; +- +-import vendor.lineage.biometrics.fingerprint.inscreen.V1_0.IFingerprintInscreen; +- + import java.io.File; + import java.io.FileDescriptor; + import java.io.PrintWriter; + import java.util.ArrayList; + import java.util.Collections; + import java.util.List; +-import java.util.NoSuchElementException; + import java.util.concurrent.CopyOnWriteArrayList; + + /** +@@ -107,9 +102,6 @@ public class FingerprintService extends BiometricServiceBase { + private static final long FAIL_LOCKOUT_TIMEOUT_MS = 30 * 1000; + private static final String KEY_LOCKOUT_RESET_USER = "lockout_reset_user"; + +- private final boolean mHasFod; +- private boolean mIsKeyguard; +- + private final class ResetFailedAttemptsForUserRunnable implements Runnable { + @Override + public void run() { +@@ -579,7 +571,6 @@ public class FingerprintService extends BiometricServiceBase { + + @GuardedBy("this") + private IBiometricsFingerprint mDaemon; +- private IFingerprintInscreen mFingerprintInscreenDaemon; + private final SparseBooleanArray mTimedLockoutCleared; + private final SparseIntArray mFailedAttempts; + private final AlarmManager mAlarmManager; +@@ -600,37 +591,12 @@ public class FingerprintService extends BiometricServiceBase { + new Fingerprint(getBiometricUtils().getUniqueName(getContext(), groupId), + groupId, fingerId, deviceId); + FingerprintService.super.handleEnrollResult(fingerprint, remaining); +- if (remaining == 0 && mHasFod) { +- IFingerprintInscreen fodDaemon = getFingerprintInScreenDaemon(); +- if (fodDaemon != null) { +- try { +- fodDaemon.onFinishEnroll(); +- } catch (RemoteException e) { +- Slog.e(TAG, "onFinishEnroll failed", e); +- } +- } +- try { +- mStatusBarService.hideInDisplayFingerprintView(); +- } catch (RemoteException e) { +- Slog.e(TAG, "hideInDisplayFingerprintView failed", e); +- } +- } + }); + } + + @Override + public void onAcquired(final long deviceId, final int acquiredInfo, final int vendorCode) { + mHandler.post(() -> { +- IFingerprintInscreen daemon = getFingerprintInScreenDaemon(); +- if (daemon != null) { +- try { +- if (daemon.handleAcquired(acquiredInfo, vendorCode)) { +- return; +- } +- } catch (RemoteException e) { +- Slog.e(TAG, "handleError failed", e); +- } +- } + FingerprintService.super.handleAcquired(deviceId, acquiredInfo, vendorCode); + }); + } +@@ -641,29 +607,12 @@ public class FingerprintService extends BiometricServiceBase { + mHandler.post(() -> { + Fingerprint fp = new Fingerprint("", groupId, fingerId, deviceId); + FingerprintService.super.handleAuthenticated(fp, token); +- if (mHasFod && fp.getBiometricId() != 0) { +- try { +- mStatusBarService.hideInDisplayFingerprintView(); +- } catch (RemoteException e) { +- Slog.e(TAG, "hideInDisplayFingerprintView failed", e); +- } +- } + }); + } + + @Override + public void onError(final long deviceId, final int error, final int vendorCode) { + mHandler.post(() -> { +- IFingerprintInscreen daemon = getFingerprintInScreenDaemon(); +- if (daemon != null) { +- try { +- if (daemon.handleError(error, vendorCode)) { +- return; +- } +- } catch (RemoteException e) { +- Slog.e(TAG, "handleError failed", e); +- } +- } + FingerprintService.super.handleError(deviceId, error, vendorCode); + // TODO: this chunk of code should be common to all biometric services + if (error == BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE) { +@@ -711,21 +660,6 @@ public class FingerprintService extends BiometricServiceBase { + Slog.w(TAG, "authenticate(): no fingerprint HAL!"); + return ERROR_ESRCH; + } +- if (mHasFod) { +- IFingerprintInscreen fodDaemon = getFingerprintInScreenDaemon(); +- if (fodDaemon != null) { +- try { +- fodDaemon.setLongPressEnabled(mIsKeyguard); +- } catch (RemoteException e) { +- Slog.e(TAG, "setLongPressEnabled failed", e); +- } +- } +- try { +- mStatusBarService.showInDisplayFingerprintView(); +- } catch (RemoteException e) { +- Slog.e(TAG, "showInDisplayFingerprintView failed", e); +- } +- } + return daemon.authenticate(operationId, groupId); + } + +@@ -736,13 +670,6 @@ public class FingerprintService extends BiometricServiceBase { + Slog.w(TAG, "cancel(): no fingerprint HAL!"); + return ERROR_ESRCH; + } +- if (mHasFod) { +- try { +- mStatusBarService.hideInDisplayFingerprintView(); +- } catch (RemoteException e) { +- Slog.e(TAG, "hideInDisplayFingerprintView failed", e); +- } +- } + return daemon.cancel(); + } + +@@ -774,21 +701,6 @@ public class FingerprintService extends BiometricServiceBase { + Slog.w(TAG, "enroll(): no fingerprint HAL!"); + return ERROR_ESRCH; + } +- if (mHasFod) { +- IFingerprintInscreen fodDaemon = getFingerprintInScreenDaemon(); +- if (fodDaemon != null) { +- try { +- fodDaemon.onStartEnroll(); +- } catch (RemoteException e) { +- Slog.e(TAG, "onStartEnroll failed", e); +- } +- } +- try { +- mStatusBarService.showInDisplayFingerprintView(); +- } catch (RemoteException e) { +- Slog.e(TAG, "showInDisplayFingerprintView failed", e); +- } +- } + return daemon.enroll(cryptoToken, groupId, timeout); + } + +@@ -807,9 +719,6 @@ public class FingerprintService extends BiometricServiceBase { + mAlarmManager = context.getSystemService(AlarmManager.class); + context.registerReceiver(mLockoutReceiver, new IntentFilter(getLockoutResetIntent()), + getLockoutBroadcastPermission(), null /* handler */); +- +- PackageManager packageManager = context.getPackageManager(); +- mHasFod = packageManager.hasSystemFeature(LineageContextConstants.Features.FOD); + } + + @Override +@@ -894,7 +803,6 @@ public class FingerprintService extends BiometricServiceBase { + + daemon.setActiveGroup(userId, fpDir.getAbsolutePath()); + mCurrentUserId = userId; +- mIsKeyguard = isKeyguard(clientPackage); + } + mAuthenticatorIds.put(userId, + hasEnrolledBiometrics(userId) ? daemon.getAuthenticatorId() : 0L); +@@ -1032,26 +940,6 @@ public class FingerprintService extends BiometricServiceBase { + return mDaemon; + } + +- private synchronized IFingerprintInscreen getFingerprintInScreenDaemon() { +- if (!mHasFod) { +- return null; +- } +- +- if (mFingerprintInscreenDaemon == null) { +- try { +- mFingerprintInscreenDaemon = IFingerprintInscreen.getService(); +- if (mFingerprintInscreenDaemon != null) { +- mFingerprintInscreenDaemon.asBinder().linkToDeath((cookie) -> { +- mFingerprintInscreenDaemon = null; +- }, 0); +- } +- } catch (NoSuchElementException | RemoteException e) { +- Slog.e(TAG, "Failed to get IFingerprintInscreen interface", e); +- } +- } +- return mFingerprintInscreenDaemon; +- } +- + private long startPreEnroll(IBinder token) { + IBiometricsFingerprint daemon = getFingerprintDaemon(); + if (daemon == null) { +diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +index 81c57d75bbb..faeafc25f67 100644 +--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java ++++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +@@ -664,28 +664,6 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D + } + } + +- @Override +- public void showInDisplayFingerprintView() { +- if (mBar != null) { +- try { +- mBar.showInDisplayFingerprintView(); +- } catch (RemoteException ex) { +- // do nothing +- } +- } +- } +- +- @Override +- public void hideInDisplayFingerprintView() { +- if (mBar != null) { +- try { +- mBar.hideInDisplayFingerprintView(); +- } catch (RemoteException ex) { +- // do nothing +- } +- } +- } +- + @Override + public void setBlockedGesturalNavigation(boolean blocked) { + if (mBar != null) { +-- +2.17.1 + diff --git a/patches/0001-TEMP-treble-Fix-init.treble-environ.rc-hardcode-for-.patch b/patches/0001-TEMP-treble-Fix-init.treble-environ.rc-hardcode-for-.patch new file mode 100644 index 0000000..8fa3235 --- /dev/null +++ b/patches/0001-TEMP-treble-Fix-init.treble-environ.rc-hardcode-for-.patch @@ -0,0 +1,25 @@ +From f0826e489f5b2823d22273a55ef628945fa9819c Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Fri, 1 Nov 2019 15:26:10 +0000 +Subject: [PATCH] [TEMP] treble: Fix init.treble-environ.rc hardcode for LOS + +Refer to https://github.com/phhusson/device_phh_treble/commit/a6aa52f7b11cc7d3f9fbe51356b34ebf0705d775 + +Change-Id: I045e140f0eafe13bca07c6e24f31361a3f876a45 +--- + environ/init.treble-environ.rc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/environ/init.treble-environ.rc b/environ/init.treble-environ.rc +index 4fc8c32..d36ba2c 100644 +--- a/environ/init.treble-environ.rc ++++ b/environ/init.treble-environ.rc +@@ -1,4 +1,4 @@ + # set up the global environment + on init + export BOOTCLASSPATH /apex/com.android.runtime/javalib/core-oj.jar:/apex/com.android.runtime/javalib/core-libart.jar:/apex/com.android.runtime/javalib/okhttp.jar:/apex/com.android.runtime/javalib/bouncycastle.jar:/apex/com.android.runtime/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/android.test.base.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar +- export SYSTEMSERVERCLASSPATH /system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/com.android.location.provider.jar ++ export SYSTEMSERVERCLASSPATH /system/framework/org.lineageos.platform.jar:/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/com.android.location.provider.jar +-- +2.17.1 + diff --git a/patches/0001-UI-Revive-navbar-layout-tuning-via-sysui_nav_bar-tun.patch b/patches/0001-UI-Revive-navbar-layout-tuning-via-sysui_nav_bar-tun.patch new file mode 100644 index 0000000..ad31e13 --- /dev/null +++ b/patches/0001-UI-Revive-navbar-layout-tuning-via-sysui_nav_bar-tun.patch @@ -0,0 +1,40 @@ +From 9a0fea3a8fa45f4fd804f06eaa0a39a044ecb0d8 Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Sun, 3 Nov 2019 03:32:02 +0000 +Subject: [PATCH] UI: Revive navbar layout tuning via sysui_nav_bar tunable + +Google keeps fixing what ain't broken. +This partially undoes https://github.com/LineageOS/android_frameworks_base/commit/e0d5ccd331e694afdc3c8462a1b845df329de2b8 + +Change-Id: I7a0fcfc9c27a08100712200d50f295f4bd81494d +--- + .../systemui/statusbar/phone/NavigationBarInflaterView.java | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java +index 79a47af9fdf..50b3a47b6fa 100644 +--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java ++++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java +@@ -155,7 +155,7 @@ public class NavigationBarInflaterView extends FrameLayout + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); +- Dependency.get(TunerService.class).addTunable(this, NAV_BAR_INVERSE); ++ Dependency.get(TunerService.class).addTunable(this, NAV_BAR_VIEWS, NAV_BAR_INVERSE); + } + + @Override +@@ -167,7 +167,9 @@ public class NavigationBarInflaterView extends FrameLayout + + @Override + public void onTuningChanged(String key, String newValue) { +- if (NAV_BAR_INVERSE.equals(key)) { ++ if (NAV_BAR_VIEWS.equals(key)) { ++ setNavigationBarLayout(newValue); ++ } else if (NAV_BAR_INVERSE.equals(key)) { + mInverseLayout = TunerService.parseIntegerSwitch(newValue, false); + updateLayoutInversion(); + } +-- +2.17.1 + diff --git a/patches/0001-build-Don-t-handle-apns-conf.patch b/patches/0001-build-Don-t-handle-apns-conf.patch new file mode 100644 index 0000000..aa52d33 --- /dev/null +++ b/patches/0001-build-Don-t-handle-apns-conf.patch @@ -0,0 +1,62 @@ +From 834da871f22f65ee8c8a807c13f9248a4633ecee Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Tue, 22 Oct 2019 12:36:03 +0000 +Subject: [PATCH] build: Don't handle apns-conf + +Leave it to vendor/lineage instead + +Change-Id: I743e2d8ab8b6527c887b4d9bbc219ff4dcf6a9ba +--- + target/product/full_base_telephony.mk | 5 ----- + target/product/gsi_common.mk | 7 ------- + target/product/mainline.mk | 4 ---- + 3 files changed, 16 deletions(-) + +diff --git a/target/product/full_base_telephony.mk b/target/product/full_base_telephony.mk +index e3442147a..0aa9e7700 100644 +--- a/target/product/full_base_telephony.mk ++++ b/target/product/full_base_telephony.mk +@@ -30,10 +30,5 @@ endif + PRODUCT_COPY_FILES := \ + frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml + +-ifeq ($(LINEAGE_BUILD),) +-PRODUCT_COPY_FILES += \ +- device/sample/etc/apns-full-conf.xml:system/etc/apns-conf.xml +-endif +- + $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base.mk) + $(call inherit-product, $(SRC_TARGET_DIR)/product/telephony.mk) +diff --git a/target/product/gsi_common.mk b/target/product/gsi_common.mk +index dac3a2fcf..b7ef78c23 100644 +--- a/target/product/gsi_common.mk ++++ b/target/product/gsi_common.mk +@@ -87,13 +87,6 @@ PRODUCT_PACKAGES += \ + WAPPushManager \ + WallpaperPicker \ + +-# Telephony: +-# Provide a APN configuration to GSI product +-ifeq ($(LINEAGE_BUILD),) +-PRODUCT_COPY_FILES += \ +- device/sample/etc/apns-full-conf.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/apns-conf.xml +-endif +- + # NFC: + # Provide a libnfc-nci.conf to GSI product + PRODUCT_COPY_FILES += \ +diff --git a/target/product/mainline.mk b/target/product/mainline.mk +index ca16fc656..70da48b25 100644 +--- a/target/product/mainline.mk ++++ b/target/product/mainline.mk +@@ -40,7 +40,3 @@ endif + PRODUCT_PACKAGES += \ + PhotoTable \ + WallpaperPicker \ +- +-ifeq ($(LINEAGE_BUILD),) +-PRODUCT_COPY_FILES += device/sample/etc/apns-full-conf.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/apns-conf.xml +-endif +-- +2.17.1 + diff --git a/patches/0001-build_soong-Disable-generated_kernel_headers.patch b/patches/0001-build_soong-Disable-generated_kernel_headers.patch new file mode 100644 index 0000000..5d11889 --- /dev/null +++ b/patches/0001-build_soong-Disable-generated_kernel_headers.patch @@ -0,0 +1,47 @@ +From 61fdb30f08de01d6dee49168626de9da57d34700 Mon Sep 17 00:00:00 2001 +From: AndyCGYan +Date: Sun, 3 Mar 2019 14:07:33 +0800 +Subject: [PATCH] build_soong: Disable generated_kernel_headers + +Change-Id: I630857cec208f1830e776bf5031d7bb9bc4435d0 +--- + build/soong/Android.bp | 26 -------------------------- + 1 file changed, 26 deletions(-) + +diff --git a/build/soong/Android.bp b/build/soong/Android.bp +index cbea01f3..108c52f7 100644 +--- a/build/soong/Android.bp ++++ b/build/soong/Android.bp +@@ -22,29 +22,3 @@ bootstrap_go_package { + ], + pluginFor: ["soong_build"], + } +- +-lineage_generator { +- name: "generated_kernel_includes", +- +- // The headers make command +- cmd: "$(PATH_OVERRIDE_SOONG) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(TARGET_KERNEL_SOURCE) O=$(KERNEL_BUILD_OUT_PREFIX)$(genDir) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) headers_install", +- +- // Directories that can be imported by a cc_* module generated_headers property +- export_include_dirs: [ +- "usr/include", +- "usr/include/audio/include/uapi", +- "usr/techpack/audio/include" +- ], +- +- // Sources for dependency tracking +- dep_root: "$(TARGET_KERNEL_SOURCE)", +- dep_files: [ "Makefile", "include/**/*", "arch/$(KERNEL_ARCH)/include/**/*", "techpack/audio/include/**/*"], +-} +- +-cc_library_headers { +- name: "generated_kernel_headers", +- generated_headers: ["generated_kernel_includes"], +- export_generated_headers: ["generated_kernel_includes"], +- vendor_available: true, +- recovery_available: true, +-} +-- +2.17.1 + diff --git a/patches/0001-core-Add-support-for-MicroG.patch b/patches/0001-core-Add-support-for-MicroG.patch new file mode 100644 index 0000000..9dd11fa --- /dev/null +++ b/patches/0001-core-Add-support-for-MicroG.patch @@ -0,0 +1,106 @@ +From c9b266ded8a63da3408c24479100ea53baf455b7 Mon Sep 17 00:00:00 2001 +From: gudenau +Date: Tue, 25 Sep 2018 09:44:26 +0200 +Subject: [PATCH] core: Add support for MicroG + +-fake signatures, enabled per app by dynamic permission + +Change-Id: I84fc7e5c606f4b57012d948a4cc6cb521db6b03e +--- + core/res/AndroidManifest.xml | 7 ++++++ + core/res/res/values/config.xml | 2 ++ + core/res/res/values/strings.xml | 5 ++++ + .../server/pm/PackageManagerService.java | 23 +++++++++++++++++-- + 4 files changed, 35 insertions(+), 2 deletions(-) + +diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml +index 0c3b7a137b9..fc6f9d9a1ec 100644 +--- a/core/res/AndroidManifest.xml ++++ b/core/res/AndroidManifest.xml +@@ -2637,6 +2637,13 @@ + android:description="@string/permdesc_getPackageSize" + android:protectionLevel="normal" /> + ++ ++ ++ + +diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml +index 91f4cf3093e..91fb69f8066 100644 +--- a/core/res/res/values/config.xml ++++ b/core/res/res/values/config.xml +@@ -1856,6 +1856,8 @@ + + + com.android.location.fused ++ ++ com.google.android.gms + + + +diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml +index 152b131af8f..f8d87a37064 100644 +--- a/core/res/res/values/strings.xml ++++ b/core/res/res/values/strings.xml +@@ -827,6 +827,11 @@ + + + ++ ++ Spoof package signature ++ ++ Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Legitimate uses include an emulator pretending to be what it emulates. Grant this permission with caution only! ++ + + disable or modify status bar + +diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java +index fb672a5231f..d5878ed9fc4 100644 +--- a/services/core/java/com/android/server/pm/PackageManagerService.java ++++ b/services/core/java/com/android/server/pm/PackageManagerService.java +@@ -4111,8 +4111,9 @@ public class PackageManagerService extends IPackageManager.Stub + final Set permissions = ArrayUtils.isEmpty(p.requestedPermissions) + ? Collections.emptySet() : permissionsState.getPermissions(userId); + +- PackageInfo packageInfo = PackageParser.generatePackageInfo(p, gids, flags, +- ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId); ++ PackageInfo packageInfo = mayFakeSignature(p, PackageParser.generatePackageInfo(p, gids, flags, ++ ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId), ++ permissions); + + if (packageInfo == null) { + return null; +@@ -4148,6 +4149,24 @@ public class PackageManagerService extends IPackageManager.Stub + } + } + ++ private PackageInfo mayFakeSignature(PackageParser.Package p, PackageInfo pi, ++ Set permissions) { ++ try { ++ if (permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") ++ && p.applicationInfo.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1 ++ && p.mAppMetaData != null) { ++ String sig = p.mAppMetaData.getString("fake-signature"); ++ if (sig != null) { ++ pi.signatures = new Signature[] {new Signature(sig)}; ++ } ++ } ++ } catch (Throwable t) { ++ // We should never die because of any failures, this is system code! ++ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t); ++ } ++ return pi; ++ } ++ + @Override + public void checkPackageStartable(String packageName, int userId) { + final int callingUid = Binder.getCallingUid(); +-- +2.17.1 + diff --git a/patches/0001-cryptfshw-Remove-dependency-on-generated-kernel-head.patch b/patches/0001-cryptfshw-Remove-dependency-on-generated-kernel-head.patch new file mode 100644 index 0000000..6eeb45a --- /dev/null +++ b/patches/0001-cryptfshw-Remove-dependency-on-generated-kernel-head.patch @@ -0,0 +1,40 @@ +From 8a1c7866b848c51ad470fecc330d023dd5556d43 Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Tue, 24 Dec 2019 15:32:21 +0000 +Subject: [PATCH] cryptfshw: Remove dependency on generated kernel headers + +Change-Id: I1a95cf9f4391c40bec79d5380ee9a4dc57dbe2ac +--- + cryptfshw/1.0/Android.bp | 2 +- + cryptfshw/1.0/qsee/Android.bp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/cryptfshw/1.0/Android.bp b/cryptfshw/1.0/Android.bp +index fe511ff..6157075 100644 +--- a/cryptfshw/1.0/Android.bp ++++ b/cryptfshw/1.0/Android.bp +@@ -21,7 +21,7 @@ cc_library_static { + "CryptfsHwUtils.cpp", + ], + export_include_dirs: ["."], +- header_libs: ["generated_kernel_headers"], ++ header_libs: ["device_kernel_headers"], + shared_libs: [ + "libbase", + "libhidlbase", +diff --git a/cryptfshw/1.0/qsee/Android.bp b/cryptfshw/1.0/qsee/Android.bp +index b06e286..01cadd4 100644 +--- a/cryptfshw/1.0/qsee/Android.bp ++++ b/cryptfshw/1.0/qsee/Android.bp +@@ -38,7 +38,7 @@ cc_binary { + }, + }, + }, +- header_libs: ["generated_kernel_headers"], ++ header_libs: ["device_kernel_headers"], + shared_libs: [ + "libbase", + "libdl", +-- +2.17.1 + diff --git a/patches/0001-sdk-Invert-per-app-stretch-to-fullscreen.patch b/patches/0001-sdk-Invert-per-app-stretch-to-fullscreen.patch new file mode 100644 index 0000000..d9229cc --- /dev/null +++ b/patches/0001-sdk-Invert-per-app-stretch-to-fullscreen.patch @@ -0,0 +1,26 @@ +From 95ef97f5aa82c15e47f9313eca4899d89dba5dd0 Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Wed, 4 Jul 2018 17:59:14 +0800 +Subject: [PATCH] sdk: Invert per-app stretch-to-fullscreen implementation + +Change-Id: Idf7dab4e1e0c79953fa672f33ec65fecffb37c83 +--- + sdk/src/java/org/lineageos/internal/applications/LongScreen.java | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sdk/src/java/org/lineageos/internal/applications/LongScreen.java b/sdk/src/java/org/lineageos/internal/applications/LongScreen.java +index 7fe0d68..26ea349 100644 +--- a/sdk/src/java/org/lineageos/internal/applications/LongScreen.java ++++ b/sdk/src/java/org/lineageos/internal/applications/LongScreen.java +@@ -57,7 +57,7 @@ public class LongScreen { + } + + public boolean shouldForceLongScreen(String packageName) { +- return isSupported() && mApps.contains(packageName); ++ return isSupported() && !(mApps.contains(packageName)); + } + + public Set getApps() { +-- +2.7.4 + diff --git a/patches/0001-treble-Add-overlay-lineage.patch b/patches/0001-treble-Add-overlay-lineage.patch new file mode 100644 index 0000000..38b9f74 --- /dev/null +++ b/patches/0001-treble-Add-overlay-lineage.patch @@ -0,0 +1,117 @@ +From b35194fdd618f1ae2682c6d285d92a4ae7d421cc Mon Sep 17 00:00:00 2001 +From: AndyCGYan +Date: Mon, 15 Jul 2019 10:43:52 +0000 +Subject: [PATCH] treble: Add overlay-lineage + +Change-Id: I9d313b1488d98acc7cf37d23820946ee99745426 +--- + base.mk | 4 +- + .../lineage/res/res/values/config.xml | 81 +++++++++++++++++++ + 2 files changed, 84 insertions(+), 1 deletion(-) + create mode 100644 overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml + +diff --git a/base.mk b/base.mk +index 8636247..f18e1c7 100644 +--- a/base.mk ++++ b/base.mk +@@ -11,7 +11,9 @@ PRODUCT_COPY_FILES += \ + device/sample/etc/apns-full-conf.xml:system/etc/apns-conf.xml + + BOARD_PLAT_PRIVATE_SEPOLICY_DIR += device/phh/treble/sepolicy +-DEVICE_PACKAGE_OVERLAYS += device/phh/treble/overlay ++DEVICE_PACKAGE_OVERLAYS += \ ++ device/phh/treble/overlay \ ++ device/phh/treble/overlay-lineage + + $(call inherit-product, vendor/hardware_overlay/overlay.mk) + $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +diff --git a/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml b/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml +new file mode 100644 +index 0000000..8df673a +--- /dev/null ++++ b/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml +@@ -0,0 +1,81 @@ ++ ++ ++ ++ ++ true ++ ++ ++ 255 ++ ++ ++ 127 ++ ++ ++ 127 ++ +-- +2.17.1 + diff --git a/patches/0001-treble-Don-t-specify-config_wallpaperCropperPackage.patch b/patches/0001-treble-Don-t-specify-config_wallpaperCropperPackage.patch new file mode 100644 index 0000000..b774d4e --- /dev/null +++ b/patches/0001-treble-Don-t-specify-config_wallpaperCropperPackage.patch @@ -0,0 +1,25 @@ +From 4d6f28cb695c5edf253f03c373485a21cd43d19c Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Tue, 10 Sep 2019 02:42:36 +0000 +Subject: [PATCH] treble: Don't specify config_wallpaperCropperPackage + +Change-Id: I72b59def304779e4bd9a399c01cf1180d15bf444 +--- + overlay/frameworks/base/core/res/res/values/config.xml | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml +index 28c7a28..48ca260 100644 +--- a/overlay/frameworks/base/core/res/res/values/config.xml ++++ b/overlay/frameworks/base/core/res/res/values/config.xml +@@ -22,7 +22,6 @@ + "M50 0C77.6 0 100 22.4 100 50C100 77.6 77.6 100 50 100C22.4 100 0 77.6 0 50C0 22.4 22.4 0 50 0Z" + true + +- com.android.wallpaperpicker + true + 5 + true +-- +2.17.1 + diff --git a/patches/0001-vendor_lineage-Log-privapp-permissions-whitelist-vio.patch b/patches/0001-vendor_lineage-Log-privapp-permissions-whitelist-vio.patch new file mode 100644 index 0000000..16323dd --- /dev/null +++ b/patches/0001-vendor_lineage-Log-privapp-permissions-whitelist-vio.patch @@ -0,0 +1,30 @@ +From 06ddcd3f6403ad8c76ebf3ace73ef7ebfc8b902d Mon Sep 17 00:00:00 2001 +From: Andy CrossGate Yan +Date: Thu, 5 Sep 2019 02:08:22 +0000 +Subject: [PATCH] vendor_lineage: Log privapp-permissions whitelist violations + instead + +Change-Id: I49dba61f332253e291a65e79ca70d9a07d45bb07 +--- + config/common.mk | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/config/common.mk b/config/common.mk +index 2be6dfff..79792b13 100644 +--- a/config/common.mk ++++ b/config/common.mk +@@ -87,9 +87,9 @@ PRODUCT_COPY_FILES += \ + vendor/lineage/config/permissions/privapp-permissions-lineage-product.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/privapp-permissions-lineage.xml \ + vendor/lineage/config/permissions/privapp-permissions-cm-legacy.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-cm-legacy.xml + +-# Enforce privapp-permissions whitelist ++# Log privapp-permissions whitelist violations + PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ +- ro.control_privapp_permissions=enforce ++ ro.control_privapp_permissions=log + + # Hidden API whitelist + PRODUCT_COPY_FILES += \ +-- +2.17.1 +