John Andrew Camu e994660cb0 Patches for crashes in Android Q, R and S (#3728)
* Initial Patches for to support Q,R and S

- TODO create Widget Factory Holder

* Remove tracing

* Fixed Resources$NotFoundException

Lawnchair (Debug) bug report 15-Nov-2023 2:32:03 pm
version: 13 Dev (#2291) (13)
commit: c5bed50
build.brand: samsung
build.device: m30s
build.display: RP1A.200720.012.M307FXXS4CWC2
build.fingerprint: samsung/m30sdd/m30s:11/RP1A.200720.012/M307FXXS4CWC2:user/release-keys
build.hardware: exynos9611
build.id: RP1A.200720.012
build.manufacturer: samsung
build.model: SM-M307F
build.product: m30sdd
build.type: user
version.codename: REL
version.incremental: M307FXXS4CWC2
version.release: 11
version.sdk_int: 30
display.density_dpi: 420
isRecentsEnabled: false

error: Uncaught exception

android.view.InflateException: Binary XML file line #27 in app.lawnchair.debug:layout/task_desktop: Resource ID #0x106002f
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x106002f
	at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:255)
	at android.content.res.Resources.getColor(Resources.java:1169)
	at com.android.quickstep.views.DesktopTaskView.onFinishInflate(DesktopTaskView.java:124)
	at android.view.LayoutInflater.rInflate(LayoutInflater.java:1134)
	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
	at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
	at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
	at com.android.launcher3.util.ViewPool.inflateNewView(ViewPool.java:106)
	at com.android.launcher3.util.ViewPool.lambda$initPool$1(ViewPool.java:69)
	at com.android.launcher3.util.ViewPool.$r8$lambda$wSRnQcMZiOmM7xwf4gm88rNehhg(ViewPool.java:0)
	at com.android.launcher3.util.ViewPool$$ExternalSyntheticLambda1.run(R8$$SyntheticClass:0)
	at java.lang.Thread.run(Thread.java:923)

* Fix java.lang.NoClassDefFoundError OnBackInvokedCallback$Stub

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/window/IOnBackInvokedCallback$Stub;
                                                                                                    	at com.android.launcher3.QuickstepTransitionManager.<init>(QuickstepTransitionManager.java:265)
                                                                                                    	at com.android.launcher3.uioverrides.QuickstepLauncher.buildAppTransitionManager(QuickstepLauncher.java:302)
                                                                                                    	at com.android.launcher3.uioverrides.QuickstepLauncher.setupViews(QuickstepLauncher.java:236)
                                                                                                    	at app.lawnchair.LawnchairLauncher.setupViews(LawnchairLauncher.kt:244)
                                                                                                    	at com.android.launcher3.Launcher.onCreate(Launcher.java:518)
                                                                                                    	at com.android.launcher3.uioverrides.QuickstepLauncher.onCreate(QuickstepLauncher.java:527)
                                                                                                    	at app.lawnchair.LawnchairLauncher.onCreate(LawnchairLauncher.kt:186)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8057)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8037)
                                                                                                    	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1341)
                                                                                                    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3688)
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864)
                                                                                                    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
                                                                                                    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7870)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
                                                                                                    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.window.IOnBackInvokedCallback$Stub" on path: DexPathList[[zip file "/data/app/~~xd_Rtvu8nzsZdmkjP4cE7A==/app.lawnchair.debug-LCjip_oNAIceiLCO_DoA3g==/base.apk"],nativeLibraryDirectories=[/data/app/~~xd_Rtvu8nzsZdmkjP4cE7A==/app.lawnchair.debug-LCjip_oNAIceiLCO_DoA3g==/lib/arm64, /data/app/~~xd_Rtvu8nzsZdmkjP4cE7A==/app.lawnchair.debug-LCjip_oNAIceiLCO_DoA3g==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64, /system/product/lib64]]
                                                                                                    	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
                                                                                                    	at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
                                                                                                    	at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                                                                                                    	at com.android.launcher3.QuickstepTransitionManager.<init>(QuickstepTransitionManager.java:265) 
                                                                                                    	at com.android.launcher3.uioverrides.QuickstepLauncher.buildAppTransitionManager(QuickstepLauncher.java:302) 
                                                                                                    	at com.android.launcher3.uioverrides.QuickstepLauncher.setupViews(QuickstepLauncher.java:236) 
                                                                                                    	at app.lawnchair.LawnchairLauncher.setupViews(LawnchairLauncher.kt:244) 
                                                                                                    	at com.android.launcher3.Launcher.onCreate(Launcher.java:518) 
                                                                                                    	at com.android.launcher3.uioverrides.QuickstepLauncher.onCreate(QuickstepLauncher.java:527) 
                                                                                                    	at app.lawnchair.LawnchairLauncher.onCreate(LawnchairLauncher.kt:186) 
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8057) 
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8037) 
                                                                                                    	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1341) 
                                                                                                    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3688) 
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864) 
                                                                                                    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) 
                                                                                                    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
                                                                                                    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
                                                                                                    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253) 
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201) 
                                                                                                    	at android.os.Looper.loop(Looper.java:288) 
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7870) 
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

* Clean up and add our own window manager proxy

- Add our own LawnchairWindowManagerProxy based on SystemWindowManagerProxy to reduce conflict when merging aosp

* Keep androidx.core.app.CoreComponentFactory

java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/app.lawnchair.debug-

* Fix crash on LauncherPreviewRenderer on A10

FATAL EXCEPTION: main
                                                                                                    Process: app.lawnchair.debug, PID: 8873
                                                                                                    java.lang.NoSuchMethodError: No interface method getCurrentWindowMetrics()Landroid/view/WindowMetrics; in class Landroid/view/WindowManager; or its super classes (declaration of 'android.view.WindowManager' appears in /system/framework/framework.jar!classes3.dex)
                                                                                                    	at com.android.launcher3.graphics.LauncherPreviewRenderer.<init>(LauncherPreviewRenderer.java:246)
                                                                                                    	at app.lawnchair.views.LauncherPreviewView.renderView(LauncherPreviewView.kt:138)
                                                                                                    	at app.lawnchair.views.LauncherPreviewView.loadModelData$lambda$3$lambda$2(LauncherPreviewView.kt:109)
                                                                                                    	at app.lawnchair.views.LauncherPreviewView.$r8$lambda$cYc0chie-2LAfMVJGiDN9mdIeDA(Unknown Source:0)
                                                                                                    	at app.lawnchair.views.LauncherPreviewView$$ExternalSyntheticLambda1.run(Unknown Source:6)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:883)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:100)
                                                                                                    	at android.os.Looper.loop(Looper.java:214)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7356)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)

* Add our own LawnchairWidgetHolder

* Reformat

* improved readability

* Pass spotless

* Fix Resources$NotFoundException

Lawnchair (Debug) bug report 19 Nov 2023 12:06:33 pm
version: 13 Dev (#2327) (13)
commit: 9683178
build.brand: Teclast
build.device: T40Pro_2022_EEA
build.display: V1.02_20230826
build.fingerprint: Teclast/T40Pro_2022_EEA/T40Pro_2022_EEA:12/SP1A.210812.016/221010:user/release-keys
build.hardware: ums9230_1h10
build.id: SP1A.210812.016
build.manufacturer: Teclast
build.model: T40 Pro_EEA
build.product: T40Pro_2022_EEA
build.type: user
version.codename: REL
version.incremental: 221010
version.release: 12
version.sdk_int: 31
display.density_dpi: 280
isRecentsEnabled: false

error: Uncaught exception

java.lang.RuntimeException: Unable to start activity ComponentInfo{app.lawnchair.debug/app.lawnchair.LawnchairLauncher}: android.content.res.Resources$NotFoundException: Resource ID #0x7f0700b8 type #0x5 is not valid
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3683)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3840)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:105)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:136)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2252)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7941)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:553)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f0700b8 type #0x5 is not valid
at android.content.res.Resources.getFloat(Resources.java:1224)
at com.android.launcher3.DeviceProfile.(DeviceProfile.java:397)
at com.android.launcher3.DeviceProfile$Builder.build(DeviceProfile.java:1938)
at com.android.launcher3.InvariantDeviceProfile.initGrid(InvariantDeviceProfile.java:441)
at com.android.launcher3.InvariantDeviceProfile.initGrid(InvariantDeviceProfile.java:339)
at com.android.launcher3.InvariantDeviceProfile.initGrid(InvariantDeviceProfile.java:353)
at com.android.launcher3.InvariantDeviceProfile.(InvariantDeviceProfile.java:213)
at com.android.launcher3.InvariantDeviceProfile.$r8$lambda$DNcXzmawjoq65q3wgQi9M48DryY(Unknown Source:2)
at com.android.launcher3.InvariantDeviceProfile$$ExternalSyntheticLambda4.get(Unknown Source:0)
at com.android.launcher3.util.MainThreadInitializedObject.lambda$get$0(MainThreadInitializedObject.java:60)
at com.android.launcher3.util.MainThreadInitializedObject.$r8$lambda$xtvr3aByNYHC2nsBQ97HC1SKg4A(Unknown Source:0)
at com.android.launcher3.util.MainThreadInitializedObject$$ExternalSyntheticLambda0.get(Unknown Source:4)
at com.android.launcher3.util.TraceHelper.allowIpcs(TraceHelper.java:84)
at com.android.launcher3.util.MainThreadInitializedObject.get(MainThreadInitializedObject.java:59)
at com.android.launcher3.LauncherAppState.(LauncherAppState.java:166)
at com.android.launcher3.LauncherAppState.(LauncherAppState.java:109)
at com.android.launcher3.LauncherAppState$$ExternalSyntheticLambda12.get(Unknown Source:2)
at com.android.launcher3.util.MainThreadInitializedObject.lambda$get$0(MainThreadInitializedObject.java:60)
at com.android.launcher3.util.MainThreadInitializedObject.$r8$lambda$xtvr3aByNYHC2nsBQ97HC1SKg4A(Unknown Source:0)
at com.android.launcher3.util.MainThreadInitializedObject$$ExternalSyntheticLambda0.get(Unknown Source:4)
at com.android.launcher3.util.TraceHelper.allowIpcs(TraceHelper.java:84)
at com.android.launcher3.util.MainThreadInitializedObject.get(MainThreadInitializedObject.java:59)
at com.android.launcher3.LauncherAppState.getInstance(LauncherAppState.java:97)
at com.android.launcher3.Launcher.onCreate(Launcher.java:492)
at com.android.launcher3.uioverrides.QuickstepLauncher.onCreate(QuickstepLauncher.java:527)
at app.lawnchair.LawnchairLauncher.onCreate(LawnchairLauncher.kt:205)
at android.app.Activity.performCreate(Activity.java:8060)
at android.app.Activity.performCreate(Activity.java:8040)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3653)
... 12 more

* Keep InputMethodService.canImeRenderGesturalNavButtons

---------

Co-authored-by: Goooler <wangzongler@gmail.com>
2023-11-20 14:46:36 +08:00
2022-09-06 21:59:23 +04:30
2023-10-21 09:52:01 +08:00
2023-10-21 09:52:01 +08:00
2022-05-17 23:14:06 +07:00
2022-08-10 15:07:14 +05:30
2023-01-08 16:21:37 +08:00
2021-10-06 09:43:50 +07:00
2023-10-21 09:52:01 +08:00
2019-11-25 20:24:07 +09:00
2022-08-08 16:57:06 +04:30
2022-11-25 22:41:28 +08:00
2022-08-02 14:58:25 -07:00
2022-08-08 16:57:06 +04:30

Lawnchair 13

Build debug APK Build release APK Crowdin Telegram Discord

Lawnchair is a free, open-source home app for Android. Taking Launcher3 — Androids default home app — as a starting point, it ports Pixel Launcher features and introduces rich options for customization.

This branch houses the codebase of Lawnchair 13, currently in development and based on Launcher3 from Android 13. For Lawnchair 9 to 12.1, see the branches with the 9- to 12.1- prefixes, respectively.

Contribute code

Whether youve fixed a bug or introduced a new feature, we welcome pull requests! (If youd like to make a larger change and check with us first, you can do so via Lawnchairs Telegram group chat.) To help translate Lawnchair 13 instead, please see “Translate.”

You can use Git to clone this repository:

git clone --recursive https://github.com/LawnchairLauncher/lawnchair.git

To build the app, select the lawnWithQuickstepDebug build type. Should you face errors relating to the iconloaderlib and searchuilib projects, run git submodule update --init --recursive.

Here are a few contribution tips:

  • The lawnchair package houses Lawnchairs own code, whereas the src package includes a clone of the Launcher3 codebase with modifications. Generally, place new files in the former, keeping changes to the latter to a minimum.

  • You can use either Java or, preferably, Kotlin.

  • Make sure your code is logical and well formatted. If using Kotlin, see “Coding conventions” in the Kotlin documentation.

  • Set 13-dev as the base branch for pull requests.

Translate

You can help translate Lawnchair 13 on Crowdin. Here are a few tips:

  • When using quotation marks, insert the symbols specific to the target language, as listed in this table.

  • Lawnchair uses title case for some English UI text. Title case isnt used in other languages; opt for sentence case instead.

  • Some English terminology may have no commonly used equivalents in other languages. In such cases, use short descriptive phrases—for example, the equivalent of bottom row for dock.

You can view all our links in the Lawnchair Wiki.

Description
Languages
Java 73.1%
Kotlin 26.5%
AIDL 0.3%
Python 0.1%