diff --git a/Manifests/Manifest_LAOS-14.1.xml b/Manifests/Manifest_LAOS-14.1.xml index c18c8fa7..62a32e52 100644 --- a/Manifests/Manifest_LAOS-14.1.xml +++ b/Manifests/Manifest_LAOS-14.1.xml @@ -28,7 +28,7 @@ - + diff --git a/Manifests/Manifest_LAOS-15.1.xml b/Manifests/Manifest_LAOS-15.1.xml index ae5f8321..33ded49b 100644 --- a/Manifests/Manifest_LAOS-15.1.xml +++ b/Manifests/Manifest_LAOS-15.1.xml @@ -28,7 +28,7 @@ - + diff --git a/Manifests/Manifest_LAOS-16.0.xml b/Manifests/Manifest_LAOS-16.0.xml index 89e1329c..e08cd436 100644 --- a/Manifests/Manifest_LAOS-16.0.xml +++ b/Manifests/Manifest_LAOS-16.0.xml @@ -27,7 +27,7 @@ - + diff --git a/Manifests/Manifest_LAOS-17.1.xml b/Manifests/Manifest_LAOS-17.1.xml index bd87c778..56815e22 100644 --- a/Manifests/Manifest_LAOS-17.1.xml +++ b/Manifests/Manifest_LAOS-17.1.xml @@ -24,7 +24,7 @@ - + diff --git a/Manifests/Manifest_LAOS-18.1.xml b/Manifests/Manifest_LAOS-18.1.xml index f3de7c42..276578fe 100644 --- a/Manifests/Manifest_LAOS-18.1.xml +++ b/Manifests/Manifest_LAOS-18.1.xml @@ -26,7 +26,7 @@ - + diff --git a/Manifests/Manifest_LAOS-19.1.xml b/Manifests/Manifest_LAOS-19.1.xml index 48e089a1..39c7f460 100644 --- a/Manifests/Manifest_LAOS-19.1.xml +++ b/Manifests/Manifest_LAOS-19.1.xml @@ -14,7 +14,7 @@ - + diff --git a/Misc/Features/GrapheneOS.txt b/Misc/Features/GrapheneOS.txt index e9e4e464..2d1e31b3 100644 --- a/Misc/Features/GrapheneOS.txt +++ b/Misc/Features/GrapheneOS.txt @@ -4,9 +4,6 @@ QQ3A.200805.001.2020.09.11.14 PQ3B.190801.002.2019.08.25.15 -show crash details -12 https://github.com/GrapheneOS/platform_frameworks_base/commit/e740f4b78344c5671d022dfe90bed9e2dacd3db6 - https time 12 https://github.com/GrapheneOS/platform_frameworks_base/commit/1d4e3f495b7b544f6314f04243e9d47b3f8e7102 12 https://github.com/GrapheneOS/platform_frameworks_base/commit/2c04a077ec9f3ac6857885199f49f4845b70ec2e @@ -66,6 +63,9 @@ nojit 9 https://github.com/GrapheneOS/platform_build/commit/5b9927197e63593b9220d1a9280021252ef205e9 9 https://github.com/GrapheneOS/platform_build/commit/e36c7aefaa78a1ed5b94c7f51d29277008eea232 +[implemented] show crash details +12 https://github.com/GrapheneOS/platform_frameworks_base/commit/e740f4b78344c5671d022dfe90bed9e2dacd3db6 + [implemented] monet toggle 12 https://github.com/GrapheneOS/platform_frameworks_base/commit/e77f8f544c8c6e826d8497be6ebbc69d72d2f1a5 12 https://github.com/GrapheneOS/platform_packages_apps_ThemePicker/commit/a287544b550887ea646277d78cde80b19e1ca9af diff --git a/Misc/captive_portal_toggle-19.1-err b/Misc/captive_portal_toggle-19.1-err new file mode 100644 index 00000000..7338a81e --- /dev/null +++ b/Misc/captive_portal_toggle-19.1-err @@ -0,0 +1,55 @@ +09-23 11:50:49.155 2227 2227 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.SubSettings}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceChangeListener(androidx.preference.Preference$OnPreferenceChangeListener)' on a null object reference +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3707) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7870) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1019) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceChangeListener(androidx.preference.Preference$OnPreferenceChangeListener)' on a null object reference +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settingslib.core.AbstractPreferenceController.displayPreference(AbstractPreferenceController.java:37) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.lambda$displayResourceTilesToScreen$7(DashboardFragment.java:339) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.$r8$lambda$7KgqziyHu5rnhM8JHZ4buqOlhzM(Unknown Source:0) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment$$ExternalSyntheticLambda2.accept(Unknown Source:4) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1390) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:604) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:283) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.Iterator.forEachRemaining(Iterator.java:116) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:475) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:133) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:236) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:435) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.displayResourceTilesToScreen(DashboardFragment.java:338) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.displayResourceTiles(DashboardFragment.java:330) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.refreshAllPreferences(DashboardFragment.java:431) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.onCreatePreferences(DashboardFragment.java:182) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.network.NetworkDashboardFragment.onCreatePreferences(NetworkDashboardFragment.java:76) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:161) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settingslib.core.lifecycle.ObservablePreferenceFragment.onCreate(ObservablePreferenceFragment.java:61) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsPreferenceFragment.onCreate(SettingsPreferenceFragment.java:126) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.onCreate(DashboardFragment.java:150) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.Fragment.performCreate(Fragment.java:2939) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:451) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:254) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2209) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2120) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2022) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:603) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.switchToFragment(SettingsActivity.java:727) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.launchSettingFragment(SettingsActivity.java:509) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.onCreate(SettingsActivity.java:304) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8057) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8037) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1341) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3688) +09-23 11:50:49.155 2227 2227 E AndroidRuntime: ... 12 more diff --git a/Patches/LineageOS-19.1/android_frameworks_base/0026-Crash_Details.patch b/Patches/LineageOS-19.1/android_frameworks_base/0026-Crash_Details.patch new file mode 100644 index 00000000..bf1800aa --- /dev/null +++ b/Patches/LineageOS-19.1/android_frameworks_base/0026-Crash_Details.patch @@ -0,0 +1,348 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dmitry Muhomor +Date: Mon, 8 Aug 2022 19:03:37 +0300 +Subject: [PATCH] add an option to show the details of an application error to + the user + +Adds a "Show details" item to crash and ANR (app not responding) dialogs that takes the user to a +SystemUI activity which shows the error details and allows to copy them to the clipboard or to +export them via the standard sharing UI. +--- + .../android/app/ApplicationErrorReport.java | 14 +- + core/res/res/layout/app_anr_dialog.xml | 4 +- + core/res/res/layout/app_error_dialog.xml | 4 +- + core/res/res/values/strings.xml | 3 + + core/res/res/values/symbols.xml | 3 + + packages/SystemUI/AndroidManifest.xml | 12 ++ + packages/SystemUI/res/values/strings.xml | 5 + + .../android/systemui/ErrorReportActivity.kt | 159 ++++++++++++++++++ + .../java/com/android/server/am/AppErrors.java | 1 + + 9 files changed, 199 insertions(+), 6 deletions(-) + create mode 100644 packages/SystemUI/src/com/android/systemui/ErrorReportActivity.kt + +diff --git a/core/java/android/app/ApplicationErrorReport.java b/core/java/android/app/ApplicationErrorReport.java +index a0b3dc0452ac..d6b9a837c46b 100644 +--- a/core/java/android/app/ApplicationErrorReport.java ++++ b/core/java/android/app/ApplicationErrorReport.java +@@ -98,6 +98,9 @@ public class ApplicationErrorReport implements Parcelable { + */ + public String packageName; + ++ /** @hide */ ++ public long packageVersion; ++ + /** + * Package name of the application which installed the application this + * report pertains to. +@@ -162,13 +165,18 @@ public class ApplicationErrorReport implements Parcelable { + String packageName, int appFlags) { + // check if error reporting is enabled in secure settings + int enabled = Settings.Global.getInt(context.getContentResolver(), +- Settings.Global.SEND_ACTION_APP_ERROR, 0); ++ Settings.Global.SEND_ACTION_APP_ERROR, 1); + if (enabled == 0) { + return null; + } + + PackageManager pm = context.getPackageManager(); + ++ ComponentName systemUiReceiver = getErrorReportReceiver(pm, packageName, "com.android.systemui"); ++ if (systemUiReceiver != null) { ++ return systemUiReceiver; ++ } ++ + // look for receiver in the installer package + String candidate = null; + ComponentName result = null; +@@ -233,6 +241,7 @@ public class ApplicationErrorReport implements Parcelable { + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(type); + dest.writeString(packageName); ++ dest.writeLong(packageVersion); + dest.writeString(installerPackageName); + dest.writeString(processName); + dest.writeLong(time); +@@ -260,6 +269,7 @@ public class ApplicationErrorReport implements Parcelable { + public void readFromParcel(Parcel in) { + type = in.readInt(); + packageName = in.readString(); ++ packageVersion = in.readLong(); + installerPackageName = in.readString(); + processName = in.readString(); + time = in.readLong(); +@@ -686,7 +696,7 @@ public class ApplicationErrorReport implements Parcelable { + */ + public void dump(Printer pw, String prefix) { + pw.println(prefix + "type: " + type); +- pw.println(prefix + "packageName: " + packageName); ++ pw.println(prefix + "packageName: " + packageName + ":" + packageVersion); + pw.println(prefix + "installerPackageName: " + installerPackageName); + pw.println(prefix + "processName: " + processName); + pw.println(prefix + "time: " + time); +diff --git a/core/res/res/layout/app_anr_dialog.xml b/core/res/res/layout/app_anr_dialog.xml +index 5ad0f4c0f6cc..ad3a2d2991de 100644 +--- a/core/res/res/layout/app_anr_dialog.xml ++++ b/core/res/res/layout/app_anr_dialog.xml +@@ -41,8 +41,8 @@ + android:id="@+id/aerr_report" + android:layout_width="match_parent" + android:layout_height="wrap_content" +- android:text="@string/aerr_report" +- android:drawableStart="@drawable/ic_feedback" ++ android:text="@string/aerr_show_details" ++ android:drawableStart="@drawable/ic_info_outline_24" + style="@style/aerr_list_item" /> + + +diff --git a/core/res/res/layout/app_error_dialog.xml b/core/res/res/layout/app_error_dialog.xml +index c3b149a1e295..a47b82018377 100644 +--- a/core/res/res/layout/app_error_dialog.xml ++++ b/core/res/res/layout/app_error_dialog.xml +@@ -52,8 +52,8 @@ + android:id="@+id/aerr_report" + android:layout_width="match_parent" + android:layout_height="wrap_content" +- android:text="@string/aerr_report" +- android:drawableStart="@drawable/ic_feedback" ++ android:text="@string/aerr_show_details" ++ android:drawableStart="@drawable/ic_info_outline_24" + style="@style/aerr_list_item" /> + +