commit 17fe976ed46cb10ea9c4e46812688b56442bc5a4 Author: Nehemiah Date: Thu Oct 5 10:50:11 2023 -0400 Initial diff --git a/duoqin/AndroidProducts.mk b/duoqin/AndroidProducts.mk new file mode 100644 index 0000000..1ae86e6 --- /dev/null +++ b/duoqin/AndroidProducts.mk @@ -0,0 +1,3 @@ +PRODUCT_MAKEFILES := \ + $(LOCAL_DIR)/duoqin-f21pro.mk \ + $(LOCAL_DIR)/duoqin-f22pro.mk diff --git a/duoqin/duoqin-f21pro.mk b/duoqin/duoqin-f21pro.mk new file mode 100644 index 0000000..56d7792 --- /dev/null +++ b/duoqin/duoqin-f21pro.mk @@ -0,0 +1,58 @@ +# +# All components inherited here go to system image +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk) + +# Enable mainline checking +# PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed + +# +# All components inherited here go to system_ext image +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk) + +# +# All components inherited here go to product image +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk) + +# +# Special settings for GSI releasing +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk) + + +PRODUCT_NAME := duoqin-f21pro +PRODUCT_DEVICE := duoqin +PRODUCT_BRAND := generic +PRODUCT_MODEL := F21pro - wePhone + +# This is for a device +PRODUCT_CHARACTERISTICS := device + +PRODUCT_PACKAGE_OVERLAYS += device/nehemiah/wephone/overlay + +PRODUCT_COPY_FILES += \ + device/nehemiah/wephone/files/mtk-kpd.idc:$(TARGET_COPY_OUT_SYSTEM)/usr/idc/mtk-kpd.idc \ + device/nehemiah/wephone/files/mtk-kpd.kcm:$(TARGET_COPY_OUT_SYSTEM)/usr/keychars/mtk-kpd.kcm \ + device/nehemiah/wephone/files/mtk-kpd.kl:$(TARGET_COPY_OUT_SYSTEM)/usr/keylayout/mtk-kpd.kl + +PRODUCT_PACKAGES += \ + BromiteSystemWebView \ + Conversations \ + Davx5 \ + Etar \ + ExactCalculator \ + DeskClock \ + FDroid \ + Linphone \ + Nextcloud \ + Wireguard + +PRODUCT_PACKAGES -= \ + EasterEgg \ + webview \ + libwebviewchromium_loader \ + libwebviewchromium_plat_support diff --git a/duoqin/duoqin-f22pro.mk b/duoqin/duoqin-f22pro.mk new file mode 100644 index 0000000..ae79109 --- /dev/null +++ b/duoqin/duoqin-f22pro.mk @@ -0,0 +1,71 @@ +# $(call inherit-product, vendor/hardware_overlay/overlay.mk) + +# +# All components inherited here go to system image +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_system.mk) + +# Enable mainline checking +# PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := true + +# +# All components inherited here go to system_ext image +# +$(call inherit-product, device/nehemiah/wephone/gsi_system_ext.mk) + +# +# All components inherited here go to product image +# +$(call inherit-product, device/generic/common/gsi_product.mk) + +# +# All components inherited here go to boot image +# +$(call inherit-product, $(SRC_TARGET_DIR)/board/generic_arm64/device.mk) + +# +# Special settings for GSI releasing +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk) + +PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS := false + +PRODUCT_NAME := duoqin-f22pro +PRODUCT_DEVICE := duoqin +PRODUCT_BRAND := wePhone +PRODUCT_MODEL := F22pro wePhone + +PRODUCT_CHARACTERISTICS := device + +PRODUCT_PACKAGE_OVERLAYS += device/nehemiah/wephone/overlay + +PRODUCT_COPY_FILES += \ + device/nehemiah/wephone/files/mtk-kpd.idc:$(TARGET_COPY_OUT_SYSTEM)/usr/idc/mtk-kpd.idc \ + device/nehemiah/wephone/files/mtk-kpd.kcm:$(TARGET_COPY_OUT_SYSTEM)/usr/keychars/mtk-kpd.kcm \ + device/nehemiah/wephone/files/mtk-kpd.kl:$(TARGET_COPY_OUT_SYSTEM)/usr/keylayout/mtk-kpd.kl + +PRODUCT_COPY_FILES += \ + device/nehemiah/wephone/files/f22pro-animation.zip:$(TARGET_COPY_OUT_SYSTEM)/media/bootanimation.zip \ + device/nehemiah/wephone/files/privapp-permissions-app.lawnchair.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-app.lawnchair.xml \ + device/nehemiah/wephone/files/privapp-permissions-net.mezimmah.wkt9.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-net.mezimmah.wkt9.xml + +PRODUCT_PACKAGES += \ + mkfs.exfat \ + fsck.exfat + +PRODUCT_PACKAGES += \ + BromiteSystemWebView \ + Contacts \ + Conversations \ + Davx5 \ + Etar \ + ExactCalculator \ + DeskClock \ + FDroid \ + Gallery2 \ + Lawnchair \ + Lawnicons \ + Linphone \ + Nextcloud \ + Wireguard diff --git a/duoqin/duoqin/BoardConfig.mk b/duoqin/duoqin/BoardConfig.mk new file mode 100644 index 0000000..9d50d08 --- /dev/null +++ b/duoqin/duoqin/BoardConfig.mk @@ -0,0 +1,31 @@ +include build/make/target/board/BoardConfigGsiCommon.mk + +TARGET_ARCH := arm64 +TARGET_ARCH_VARIANT := armv8-a +TARGET_CPU_ABI := arm64-v8a +TARGET_CPU_ABI2 := +TARGET_CPU_VARIANT := generic + +TARGET_2ND_ARCH := arm +TARGET_2ND_ARCH_VARIANT := armv8-a +TARGET_2ND_CPU_ABI := armeabi-v7a +TARGET_2ND_CPU_ABI2 := armeabi +TARGET_2ND_CPU_VARIANT := generic + +# TODO(b/111434759, b/111287060) SoC specific hacks +BOARD_ROOT_EXTRA_SYMLINKS += /vendor/lib/dsp:/dsp +BOARD_ROOT_EXTRA_SYMLINKS += /mnt/vendor/persist:/persist +BOARD_ROOT_EXTRA_SYMLINKS += /vendor/firmware_mnt:/firmware + +# TODO(b/36764215): remove this setting when the generic system image +# no longer has QCOM-specific directories under /. +BOARD_SEPOLICY_DIRS += build/make/target/board/generic_arm64/sepolicy + + +TARGET_SYSTEM_PROP := device/nehemiah/wephone/system.prop $(TARGET_SYSTEM_PROP) + +ifeq ($(BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE),) +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 +else +BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE := 33554432 +endif \ No newline at end of file diff --git a/duoqin/files/f22pro-animation.zip b/duoqin/files/f22pro-animation.zip new file mode 100644 index 0000000..13f3012 Binary files /dev/null and b/duoqin/files/f22pro-animation.zip differ diff --git a/duoqin/files/mtk-kpd.idc b/duoqin/files/mtk-kpd.idc new file mode 100644 index 0000000..ab1e3c9 --- /dev/null +++ b/duoqin/files/mtk-kpd.idc @@ -0,0 +1,6 @@ +touch.deviceType = touchScreen +touch.orientationAware = 1 + +device.internal = 1 +keyboard.layout = mtk-kpd +keyboard.characterMap = mtk-kpd diff --git a/duoqin/files/mtk-kpd.kcm b/duoqin/files/mtk-kpd.kcm new file mode 100644 index 0000000..55fbc38 --- /dev/null +++ b/duoqin/files/mtk-kpd.kcm @@ -0,0 +1 @@ +type NUMERIC \ No newline at end of file diff --git a/duoqin/files/mtk-kpd.kl b/duoqin/files/mtk-kpd.kl new file mode 100644 index 0000000..458a2b5 --- /dev/null +++ b/duoqin/files/mtk-kpd.kl @@ -0,0 +1,100 @@ +key 399 GRAVE +key 2 1 +key 3 2 +key 4 3 +key 5 4 +key 6 5 +key 7 6 +key 8 7 +key 9 8 +key 10 9 +key 11 0 +key 158 BACK +key 230 SOFT_RIGHT +key 60 SOFT_RIGHT +key 107 ENDCALL +key 62 ENDCALL +key 229 MENU +key 139 MENU +key 59 MENU +key 127 SYM +key 217 SEARCH +key 228 POUND +key 227 STAR +key 522 STAR +key 231 CALL +key 61 CALL +key 232 DPAD_CENTER +key 353 DPAD_CENTER +key 108 DPAD_DOWN +key 103 DPAD_UP +key 102 HOME +key 105 DPAD_LEFT +key 106 DPAD_RIGHT +key 115 VOLUME_UP +key 114 VOLUME_DOWN +key 113 MUTE +key 116 POWER +key 212 CAMERA +key 211 FOCUS + +key 16 Q +key 17 W +key 18 E +key 19 R +key 20 T +key 21 Y +key 22 U +key 23 I +key 24 O +key 25 P +key 26 LEFT_BRACKET +key 27 RIGHT_BRACKET +key 43 BACKSLASH + +key 30 A +key 31 S +key 32 D +key 33 F +key 34 G +key 35 H +key 36 J +key 37 K +key 38 L +key 39 SEMICOLON +key 40 APOSTROPHE +key 14 DEL + +key 44 Z +key 45 X +key 46 C +key 47 V +key 48 B +key 49 N +key 50 M +key 51 COMMA +key 52 PERIOD +key 53 SLASH +key 28 ENTER + +key 56 ALT_LEFT +key 100 ALT_RIGHT +key 42 SHIFT_LEFT +key 54 SHIFT_RIGHT +key 15 TAB +key 57 SPACE +key 150 EXPLORER +key 155 ENVELOPE + +key 12 MINUS +key 13 EQUALS +key 215 AT + +key 164 MEDIA_PLAY_PAUSE +key 128 MEDIA_STOP +key 163 MEDIA_NEXT +key 165 MEDIA_PREVIOUS +key 168 MEDIA_REWIND +key 159 MEDIA_FAST_FORWARD +key 352 DPAD_CENTER +key 523 POUND diff --git a/duoqin/files/privapp-permissions-app.lawnchair.xml b/duoqin/files/privapp-permissions-app.lawnchair.xml new file mode 100644 index 0000000..89ea285 --- /dev/null +++ b/duoqin/files/privapp-permissions-app.lawnchair.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/duoqin/files/privapp-permissions-net.mezimmah.wkt9.xml b/duoqin/files/privapp-permissions-net.mezimmah.wkt9.xml new file mode 100644 index 0000000..be7fa9e --- /dev/null +++ b/duoqin/files/privapp-permissions-net.mezimmah.wkt9.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/duoqin/gsi_system_ext.mk b/duoqin/gsi_system_ext.mk new file mode 100644 index 0000000..55a30ea --- /dev/null +++ b/duoqin/gsi_system_ext.mk @@ -0,0 +1,35 @@ +# +# 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. +# + +# This makefile contains the system_ext partition contents for CTS on +# GSI compliance testing. Only add something here for this purpose. +$(call inherit-product, $(SRC_TARGET_DIR)/product/media_system_ext.mk) + +# handheld packages +PRODUCT_PACKAGES += \ + Launcher3QuickStep \ + Provision \ + Settings \ + StorageManager \ + SystemUI + +# telephony packages +PRODUCT_PACKAGES += \ + CarrierConfig + +# Install a copy of the debug policy in GSI. +#PRODUCT_INSTALL_DEBUG_POLICY_TO_SYSTEM_EXT := true +#PRODUCT_PACKAGES += system_ext_userdebug_plat_sepolicy.cil diff --git a/duoqin/overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png b/duoqin/overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png new file mode 100644 index 0000000..14109dc Binary files /dev/null and b/duoqin/overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png differ diff --git a/duoqin/overlay/frameworks/base/core/res/res/values/config.xml b/duoqin/overlay/frameworks/base/core/res/res/values/config.xml new file mode 100644 index 0000000..b3ab443 --- /dev/null +++ b/duoqin/overlay/frameworks/base/core/res/res/values/config.xml @@ -0,0 +1,56 @@ + + + + "usb\\d" + "rndis\\d" + + + + "wlan0" + "softap.*" + "wifi_br0" + "wigig0" + + + + bnep\\d + "bt-pan" + + + true + true + "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 + + com.android.systemui/com.android.systemui.doze.DozeService + true + true + 8.0dip + 4.0dip + + true + + + + 0 + + 1 + + 2 + + 3 + + + true + + android.sensor.light + + 2 + + true + diff --git a/duoqin/overlay/frameworks/base/core/res/res/xml/config_webview_packages.xml b/duoqin/overlay/frameworks/base/core/res/res/xml/config_webview_packages.xml new file mode 100644 index 0000000..ac018af --- /dev/null +++ b/duoqin/overlay/frameworks/base/core/res/res/xml/config_webview_packages.xml @@ -0,0 +1,40 @@ + + + + + + + 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 + + + + + diff --git a/duoqin/patches/F21Pro/platform_frameworks_base/button_backlights.patch b/duoqin/patches/F21Pro/platform_frameworks_base/button_backlights.patch new file mode 100644 index 0000000..0ce50fb --- /dev/null +++ b/duoqin/patches/F21Pro/platform_frameworks_base/button_backlights.patch @@ -0,0 +1,60 @@ +diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java +index 7c0f4197363..a46b96ae5fa 100644 +--- a/services/core/java/com/android/server/display/DisplayPowerController.java ++++ b/services/core/java/com/android/server/display/DisplayPowerController.java +@@ -63,6 +63,10 @@ import com.android.server.display.whitebalance.DisplayWhiteBalanceFactory; + import com.android.server.display.whitebalance.DisplayWhiteBalanceSettings; + import com.android.server.policy.WindowManagerPolicy; + ++// Button backlights ++import com.android.server.lights.LightsManager; ++import com.android.server.lights.LogicalLight; ++ + import java.io.PrintWriter; + import java.util.List; + +@@ -258,6 +262,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + // Must only be accessed on the handler thread. + private DisplayPowerState mPowerState; + ++ // Buttons backlight ++ private LightsManager mLightsManager; ++ private LogicalLight mButtonsLight; ++ + // True if the device should wait for negative proximity sensor before + // waking up the screen. This is set to false as soon as a negative + // proximity sensor measurement is observed or when the device is forced to +@@ -686,6 +694,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + mPowerState = new DisplayPowerState(mBlanker, + mColorFadeEnabled ? new ColorFade(Display.DEFAULT_DISPLAY) : null); + ++ mLightsManager = LocalServices.getService(LightsManager.class); ++ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS); ++ + if (mColorFadeEnabled) { + mColorFadeOnAnimator = ObjectAnimator.ofFloat( + mPowerState, DisplayPowerState.COLOR_FADE_LEVEL, 0.0f, 1.0f); +@@ -1154,6 +1165,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_ON) { + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_ON); + mWindowManagerPolicy.screenTurnedOn(); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_MAX); + } + + // Grab a wake lock if we have unfinished business. +@@ -1310,6 +1322,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); + unblockScreenOn(); + mWindowManagerPolicy.screenTurnedOff(); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_MIN); + } else if (!isOff + && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_OFF) { + +@@ -1317,6 +1330,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + // Complete the full state transition on -> turningOff -> off. + unblockScreenOff(); + mWindowManagerPolicy.screenTurnedOff(); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_MIN); + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); + } + if (!isOff && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_OFF) { diff --git a/duoqin/patches/F22Pro/platform_frameworks_base/button_backlights.patch b/duoqin/patches/F22Pro/platform_frameworks_base/button_backlights.patch new file mode 100644 index 0000000..46b6309 --- /dev/null +++ b/duoqin/patches/F22Pro/platform_frameworks_base/button_backlights.patch @@ -0,0 +1,60 @@ +diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java +index 1224902aa7be..68855ebf06b9 100644 +--- a/services/core/java/com/android/server/display/DisplayPowerController.java ++++ b/services/core/java/com/android/server/display/DisplayPowerController.java +@@ -70,6 +70,10 @@ import com.android.server.display.whitebalance.DisplayWhiteBalanceFactory; + import com.android.server.display.whitebalance.DisplayWhiteBalanceSettings; + import com.android.server.policy.WindowManagerPolicy; + ++// Button backlights ++import com.android.server.lights.LightsManager; ++import com.android.server.lights.LogicalLight; ++ + import java.io.PrintWriter; + + /** +@@ -276,6 +280,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + // Must only be accessed on the handler thread. + private DisplayPowerState mPowerState; + ++ // Buttons backlight ++ private LightsManager mLightsManager; ++ private LogicalLight mButtonsLight; ++ + // True if the device should wait for negative proximity sensor before + // waking up the screen. This is set to false as soon as a negative + // proximity sensor measurement is observed or when the device is forced to +@@ -817,6 +825,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + mPowerState = new DisplayPowerState(mBlanker, + mColorFadeEnabled ? new ColorFade(mDisplayId) : null, mDisplayId, displayState); + ++ mLightsManager = LocalServices.getService(LightsManager.class); ++ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS); ++ + if (mColorFadeEnabled) { + mColorFadeOnAnimator = ObjectAnimator.ofFloat( + mPowerState, DisplayPowerState.COLOR_FADE_LEVEL, 0.0f, 1.0f); +@@ -1452,6 +1463,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_ON) { + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_ON); + mWindowManagerPolicy.screenTurnedOn(mDisplayId); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_MAX); + } + + // Grab a wake lock if we have unfinished business. +@@ -1652,6 +1664,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); + unblockScreenOn(); + mWindowManagerPolicy.screenTurnedOff(mDisplayId); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT); + } else if (!isOff + && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_OFF) { + +@@ -1659,6 +1672,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + // Complete the full state transition on -> turningOff -> off. + unblockScreenOff(); + mWindowManagerPolicy.screenTurnedOff(mDisplayId); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT); + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); + } + if (!isOff diff --git a/duoqin/patches/remove_launcher3_qsb.patch b/duoqin/patches/remove_launcher3_qsb.patch new file mode 100644 index 0000000..f3d9412 --- /dev/null +++ b/duoqin/patches/remove_launcher3_qsb.patch @@ -0,0 +1,13 @@ +diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java +index 88a9abaf8d..d4a65f05bb 100644 +--- a/src/com/android/launcher3/config/FeatureFlags.java ++++ b/src/com/android/launcher3/config/FeatureFlags.java +@@ -52,7 +52,7 @@ public final class FeatureFlags { + * Enable moving the QSB on the 0th screen of the workspace. This is not a configuration feature + * and should be modified at a project level. + */ +- public static final boolean QSB_ON_FIRST_SCREEN = true; ++ public static final boolean QSB_ON_FIRST_SCREEN = false; + + /** + * Feature flag to handle define config changes dynamically instead of killing the process. diff --git a/duoqin/system.prop b/duoqin/system.prop new file mode 100644 index 0000000..be31202 --- /dev/null +++ b/duoqin/system.prop @@ -0,0 +1,5 @@ +# Fixed Bluetooth audio +persist.bluetooth.bluetooth_audio_hal.disabled=true +persist.sys.bt.unsupport.features=00000000 +persist.sys.bt.unsupport.states=00000000 +persist.sys.bt.unsupport.stdfeatures=000001