Giter Site home page Giter Site logo

custota's Introduction

Signing keys

All signed commits, tags, and artifacts I create are signed with one of the following keys. Starting in 2023, unless GPG is required, most things will be signed with the SSH key.

This repo is pushed to Codeberg, Gitlab, and Github. All three repos should be identical and show commits signed with the keys below.

SSH signing key

  • Public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDOe6/tBnO7xZhAWXRj3ApUYgn+XZ0wnQiXM8B7tPgv4

GPG signing key

  • Fingerprint: 2233C479609BDCEC43BE9232F6A3B19090EFF32C
  • Signing subkey: 4E8D2BD62F5B7EFC4264CE03A923B14FECFFB81E
  • Public key: gpg.asc

custota's People

Contributors

archandanime avatar chenxiaolong avatar pascallj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

custota's Issues

App crashes on first launch

After flashing Custota zip file from KernelSU App and rebooting, I opened Cusota but it crashed, it's not a serious issue as the app works fine after opening it again. I doubt if it even affect the app's functionalities at all.
My device is Pixel 7a(lynx), KernelSU boot image is android13-5.10.177_2023-06-boot.img, pre-patched OTA is lynx-ota-tq3a.230805.001-c878781b.zip
full log
app crash logcat:

08-17 14:19:23.410  1661  7933 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.chiller3.custota/.settings.SettingsActivity bnds=[540,318][781,633]} from uid 10212
08-17 14:19:23.411  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 265464455; UID 10245; state: DISABLED
08-17 14:19:23.412  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 265452344; UID 10245; state: DISABLED
08-17 14:19:23.412  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 266124927; UID 10245; state: DISABLED
08-17 14:19:23.412  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 265451093; UID 10245; state: DISABLED
08-17 14:19:23.412  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 265456536; UID 10245; state: DISABLED
08-17 14:19:23.413  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 255940284; UID 10245; state: DISABLED
08-17 14:19:23.413  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 236283604; UID 10245; state: DISABLED
08-17 14:19:23.413  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 263959004; UID 10245; state: DISABLED
08-17 14:19:23.413  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 264304459; UID 10245; state: DISABLED
08-17 14:19:23.413  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 264301586; UID 10245; state: DISABLED
08-17 14:19:23.414  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 254631730; UID 10245; state: DISABLED
08-17 14:19:23.414  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 273509367; UID 10245; state: DISABLED
08-17 14:19:23.414  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 263259275; UID 10245; state: DISABLED
08-17 14:19:23.425  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 194480991; UID 10245; state: ENABLED
08-17 14:19:23.427  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 174042980; UID 10245; state: DISABLED
08-17 14:19:23.431  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 184838306; UID 10245; state: DISABLED
08-17 14:19:23.431  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 185004937; UID 10245; state: DISABLED
08-17 14:19:23.431  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 181136395; UID 10245; state: DISABLED
08-17 14:19:23.432  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 174042936; UID 10245; state: DISABLED
08-17 14:19:23.433  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 197654537; UID 10245; state: ENABLED
08-17 14:19:23.435  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 205907456; UID 10245; state: ENABLED
08-17 14:19:23.438  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 194833441; UID 10245; state: ENABLED
08-17 14:19:23.442  2440  2553 D QuickstepModelDelegate: notifyAppTargetEvent action=1 launchLocation=all-apps
08-17 14:19:23.446  1661  1714 D CompatibilityChangeReporter: Compat change id reported: 135634846; UID 10245; state: DISABLED
08-17 14:19:23.446  1661  1714 D CompatibilityChangeReporter: Compat change id reported: 177438394; UID 10245; state: DISABLED
08-17 14:19:23.446  1661  1714 D CompatibilityChangeReporter: Compat change id reported: 135772972; UID 10245; state: DISABLED
08-17 14:19:23.446  1661  1714 D CompatibilityChangeReporter: Compat change id reported: 135754954; UID 10245; state: ENABLED
08-17 14:19:23.446  1661  1735 D CompatibilityChangeReporter: Compat change id reported: 143937733; UID 10245; state: ENABLED
08-17 14:19:23.457  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 168419799; UID 10245; state: DISABLED
08-17 14:19:23.458  1661  7933 D CompatibilityChangeReporter: Compat change id reported: 273564678; UID 10245; state: DISABLED
08-17 14:19:23.463  1661  7933 D CoreBackPreview: Window{80c8d02 u0 Splash Screen com.chiller3.custota}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@d192050, mPriority=0}
08-17 14:19:23.467   958   958 D Zygote  : Forked child process 8043
08-17 14:19:23.468  1661  1735 I ActivityManager: Start proc 8043:com.chiller3.custota/u0a245 for next-top-activity {com.chiller3.custota/com.chiller3.custota.settings.SettingsActivity}
08-17 14:19:23.489  8043  8043 I hiller3.custota: Using CollectorTypeCC GC.
08-17 14:19:23.496  8043  8043 E hiller3.custota: Not starting debugger since process cannot load the jdwp agent.
08-17 14:19:23.515  8043  8043 D CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10245; state: ENABLED
08-17 14:19:23.519  8043  8043 W ziparchive: Unable to open '/system/priv-app/com.chiller3.custota/app-release.dm': No such file or directory
08-17 14:19:23.519  8043  8043 W ziparchive: Unable to open '/system/priv-app/com.chiller3.custota/app-release.dm': No such file or directory
08-17 14:19:23.540  7935  8058 D ProfileInstaller: Skipping profile installation for me.weishu.kernelsu
08-17 14:19:23.559  8043  8043 D nativeloader: Configuring classloader-namespace-shared for other apk /system/priv-app/com.chiller3.custota/app-release.apk. target_sdk_version=33, uses_libraries=, library_path=/system/priv-app/com.chiller3.custota/lib/arm64:/system/priv-app/com.chiller3.custota/app-release.apk!/lib/arm64-v8a:/system/lib64:/system_ext/lib64, permitted_path=/data:/mnt/expand:/data/user/0/com.chiller3.custota:/system/priv-app/com.chiller3.custota:/system/lib64:/system_ext/lib64
08-17 14:19:23.564  8043  8043 W hiller3.custota: JIT profile information will not be recorded: profile file does not exist.
08-17 14:19:23.578  8043  8043 V GraphicsEnvironment: ANGLE Developer option for 'com.chiller3.custota' set to: 'default'
08-17 14:19:23.578  8043  8043 V GraphicsEnvironment: ANGLE GameManagerService for com.chiller3.custota: false
08-17 14:19:23.578  8043  8043 V GraphicsEnvironment: Neither updatable production driver nor prerelease driver is supported.
08-17 14:19:23.580  8043  8043 D NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: false
08-17 14:19:23.583  8043  8043 D NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: false
08-17 14:19:23.620  8043  8043 D CompatibilityChangeReporter: Compat change id reported: 194532703; UID 10245; state: ENABLED
08-17 14:19:23.621  8043  8043 D UpdaterJob: Scheduling job: (job:2/com.chiller3.custota/.updater.UpdaterJob)
08-17 14:19:23.622  1661  3471 D CompatibilityChangeReporter: Compat change id reported: 194532703; UID 10245; state: ENABLED
08-17 14:19:23.623  1661  3471 D ConnectivityService: requestNetwork for uid/pid:1000/1661 asUid: 10245 activeRequest: null callbackRequest: 181 [NetworkRequest [ REQUEST id=182, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10245 RequestorUid: 1000 RequestorPkg: android UnderlyingNetworks: Null] ]] callback flags: 0 order: 2147483647
08-17 14:19:23.624  8043  8043 D UpdaterJob: Scheduled job: (job:2/com.chiller3.custota/.updater.UpdaterJob)
08-17 14:19:23.627  1661  1969 D WifiNetworkFactory: got request NetworkRequest [ REQUEST id=182, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10245 RequestorUid: 1000 RequestorPkg: android UnderlyingNetworks: Null] ]
08-17 14:19:23.627  1661  1969 D UntrustedWifiNetworkFactory: got request NetworkRequest [ REQUEST id=182, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10245 RequestorUid: 1000 RequestorPkg: android UnderlyingNetworks: Null] ]
08-17 14:19:23.628  1661  1969 D OemPaidWifiNetworkFactory: got request NetworkRequest [ REQUEST id=182, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10245 RequestorUid: 1000 RequestorPkg: android UnderlyingNetworks: Null] ]
08-17 14:19:23.628  1661  1969 D MultiInternetWifiNetworkFactory: got request NetworkRequest [ REQUEST id=182, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10245 RequestorUid: 1000 RequestorPkg: android UnderlyingNetworks: Null] ]
08-17 14:19:23.629  1661  1977 D ConnectivityService: NetReassign [182 : null โ†’ 100] [c 1] [a 1] [i 4]
08-17 14:19:23.630  8043  8060 D vulkan  : searching for layers in '/system/priv-app/com.chiller3.custota/app-release.apk!/lib/arm64-v8a'
08-17 14:19:23.630  8043  8060 D vulkan  : searching for layers in '/system/lib64'
08-17 14:19:23.632  8043  8060 D vulkan  : searching for layers in '/system_ext/lib64'
08-17 14:19:23.664  8043  8043 D AppCompatDelegate: Checking for metadata for AppLocalesMetadataHolderService : Service not found
08-17 14:19:23.725  8043  8043 D CompatibilityChangeReporter: Compat change id reported: 210923482; UID 10245; state: ENABLED
08-17 14:19:23.782   446   446 D libnos_transport: Calling App 1 with params 0x0003
08-17 14:19:23.817   446   446 D libnos_transport: App 1 inspection status=0x00000000 reply_len=0 protocol=1 flags=0x0000
08-17 14:19:23.817   446   446 D libnos_transport: Send app 1 command data (0 bytes)
08-17 14:19:23.817   446   446 D libnos_transport: Send app 1 go command 0x00010003
08-17 14:19:23.818   446   446 D libnos_transport: Polling app 1
08-17 14:19:23.819   446   446 D libnos_transport: App 1 polled=1 status=0x80000000 reply_len=0 flags=0x0000
08-17 14:19:23.819   446   446 D libnos_transport: App 1 returning 0x0
08-17 14:19:23.821   446   446 D libnos_transport: Calling App 1 with params 0x0003
08-17 14:19:23.822   446   446 D libnos_transport: App 1 inspection status=0x00000000 reply_len=0 protocol=1 flags=0x0000
08-17 14:19:23.822   446   446 D libnos_transport: Send app 1 command data (2 bytes)
08-17 14:19:23.822   446   446 D libnos_transport: Send app 1 go command 0x00010003
08-17 14:19:23.823   446   446 D libnos_transport: Polling app 1
08-17 14:19:23.824   446   446 D libnos_transport: App 1 polled=1 status=0x80000000 reply_len=0 flags=0x0000
08-17 14:19:23.824   446   446 D libnos_transport: App 1 returning 0x0
08-17 14:19:23.833  8043  8043 D CompatibilityChangeReporter: Compat change id reported: 237531167; UID 10245; state: DISABLED
08-17 14:19:23.844  1661  7933 D CoreBackPreview: Window{494d9f3 u0 com.chiller3.custota/com.chiller3.custota.settings.SettingsActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@1cba929, mPriority=0}
08-17 14:19:23.856   451  2743 W ServiceManager: Permission failure: android.permission.ACCESS_SURFACE_FLINGER from uid=10245 pid=0
08-17 14:19:23.856   451  2743 D PermissionCache: checking android.permission.ACCESS_SURFACE_FLINGER for uid=10245 => denied (859 us)
08-17 14:19:23.856   451   498 W ServiceManager: Permission failure: android.permission.ACCESS_SURFACE_FLINGER from uid=10245 pid=8043
08-17 14:19:23.856   451   498 D PermissionCache: checking android.permission.ACCESS_SURFACE_FLINGER for uid=10245 => denied (834 us)
08-17 14:19:23.856   451  2743 W ServiceManager: Permission failure: android.permission.ROTATE_SURFACE_FLINGER from uid=10245 pid=0
08-17 14:19:23.856   451   498 W ServiceManager: Permission failure: android.permission.ROTATE_SURFACE_FLINGER from uid=10245 pid=8043
08-17 14:19:23.856   451   498 D PermissionCache: checking android.permission.ROTATE_SURFACE_FLINGER for uid=10245 => denied (324 us)
08-17 14:19:23.856   451  2743 D PermissionCache: checking android.permission.ROTATE_SURFACE_FLINGER for uid=10245 => denied (402 us)
08-17 14:19:23.857   451   498 W ServiceManager: Permission failure: android.permission.INTERNAL_SYSTEM_WINDOW from uid=10245 pid=8043
08-17 14:19:23.857   451   498 D PermissionCache: checking android.permission.INTERNAL_SYSTEM_WINDOW for uid=10245 => denied (285 us)
08-17 14:19:23.857   451  2743 W ServiceManager: Permission failure: android.permission.INTERNAL_SYSTEM_WINDOW from uid=10245 pid=0
08-17 14:19:23.857   451  2743 D PermissionCache: checking android.permission.INTERNAL_SYSTEM_WINDOW for uid=10245 => denied (334 us)
08-17 14:19:23.862   393   393 I hwservicemanager: getTransport: Cannot find entry [email protected]::IAllocator/default in either framework or device VINTF manifest.
08-17 14:19:23.863   392   392 I servicemanager: Found android.hardware.graphics.allocator.IAllocator/default in device VINTF manifest.
08-17 14:19:23.971  1661  1711 W ziparchive: Unable to open '/system/priv-app/com.chiller3.custota/app-release.dm': No such file or directory
08-17 14:19:23.971  1661  1711 W ziparchive: Unable to open '/system/priv-app/com.chiller3.custota/app-release.dm': No such file or directory
08-17 14:19:23.972  1661  1711 I ActivityTaskManager: Displayed com.chiller3.custota/.settings.SettingsActivity: +560ms
08-17 14:19:24.001  8043  8043 D UpdaterService: Received intent: Intent { act=com.chiller3.custota.updater.UpdaterService.start cmp=com.chiller3.custota/.updater.UpdaterService (has extras) }
08-17 14:19:24.001  8043  8043 W UpdaterService: Not starting thread because no URL is configured
08-17 14:19:24.001  8043  8043 D UpdaterService: Trying to stop service if possible
08-17 14:19:24.001  8043  8043 D UpdaterService: Updater thread completed; stopping service
08-17 14:19:24.001  1661  7933 W ActivityManager: Bringing down service while still waiting for start foreground: ServiceRecord{c8ad59d u0 com.chiller3.custota/.updater.UpdaterService}
08-17 14:19:24.007  1661  3582 D CompatibilityChangeReporter: Compat change id reported: 214016041; UID 10245; state: ENABLED
08-17 14:19:24.010  8043  8043 D AndroidRuntime: Shutting down VM
--------- beginning of crash
08-17 14:19:24.011  8043  8043 E AndroidRuntime: FATAL EXCEPTION: main
08-17 14:19:24.011  8043  8043 E AndroidRuntime: Process: com.chiller3.custota, PID: 8043
08-17 14:19:24.011  8043  8043 E AndroidRuntime: android.app.RemoteServiceException$ForegroundServiceDidNotStartInTimeException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{c8ad59d u0 com.chiller3.custota/.updater.UpdaterService}
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.ActivityThread.generateForegroundServiceDidNotStartInTimeException(ActivityThread.java:2004)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.ActivityThread.throwRemoteServiceException(ActivityThread.java:1978)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.ActivityThread.-$$Nest$mthrowRemoteServiceException(Unknown Source:0)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2240)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:106)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:201)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:288)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7918)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: Caused by: android.app.StackTrace: Last startServiceCommon() call for this service was made here
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1915)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.ContextImpl.startForegroundService(ContextImpl.java:1870)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.content.ContextWrapper.startForegroundService(ContextWrapper.java:822)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at com.chiller3.custota.updater.UpdaterJob.onStartJob(Unknown Source:129)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.job.JobService$1.onStartJob(JobService.java:68)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	at android.app.job.JobServiceEngine$JobHandler.handleMessage(JobServiceEngine.java:105)
08-17 14:19:24.011  8043  8043 E AndroidRuntime: 	... 7 more
08-17 14:19:24.016  8043  8043 E MainApplication: Saving logcat to /storage/emulated/0/Android/data/com.chiller3.custota/files/crash.log due to uncaught exception in Thread[main,5,main]
08-17 14:19:24.016  8043  8043 E MainApplication: android.app.RemoteServiceException$ForegroundServiceDidNotStartInTimeException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{c8ad59d u0 com.chiller3.custota/.updater.UpdaterService}
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.ActivityThread.generateForegroundServiceDidNotStartInTimeException(ActivityThread.java:2004)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.ActivityThread.throwRemoteServiceException(ActivityThread.java:1978)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.ActivityThread.-$$Nest$mthrowRemoteServiceException(Unknown Source:0)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2240)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.os.Handler.dispatchMessage(Handler.java:106)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.os.Looper.loopOnce(Looper.java:201)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.os.Looper.loop(Looper.java:288)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.ActivityThread.main(ActivityThread.java:7918)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at java.lang.reflect.Method.invoke(Native Method)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
08-17 14:19:24.016  8043  8043 E MainApplication: Caused by: android.app.StackTrace: Last startServiceCommon() call for this service was made here
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1915)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.ContextImpl.startForegroundService(ContextImpl.java:1870)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.content.ContextWrapper.startForegroundService(ContextWrapper.java:822)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at com.chiller3.custota.updater.UpdaterJob.onStartJob(Unknown Source:129)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.job.JobService$1.onStartJob(JobService.java:68)
08-17 14:19:24.016  8043  8043 E MainApplication: 	at android.app.job.JobServiceEngine$JobHandler.handleMessage(JobServiceEngine.java:105)
08-17 14:19:24.016  8043  8043 E MainApplication: 	... 7 more
08-17 14:19:24.018  3732  3732 I GoogleInputMethodService: GoogleInputMethodService.onFinishInput():3228 
08-17 14:19:24.036  3732  3732 I GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2068 repeatCheckTimes = 0, locked = false
08-17 14:19:24.048  3732  3732 I GoogleInputMethodService: GoogleInputMethodService.onStartInput():1862 onStartInput(EditorInfo{EditorInfo{packageName=com.chiller3.custota, inputType=0, inputTypeString=NULL, enableLearning=false, autoCorrection=false, autoComplete=false, imeOptions=0, privateImeOptions=null, actionName=UNSPECIFIED, actionLabel=null, initialSelStart=-1, initialSelEnd=-1, initialCapsMode=0, label=null, fieldId=-1, fieldName=null, extras=null, hintText=null, hintLocales=[]}}, false)
08-17 14:19:24.051  3732  3732 I GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2068 repeatCheckTimes = 1, locked = false
08-17 14:19:24.077  1661  3471 W ActivityTaskManager:   Force finishing activity com.chiller3.custota/.settings.SettingsActivity
08-17 14:19:24.096  8043  8043 I Process : Sending signal. PID: 8043 SIG: 9
08-17 14:19:24.125  1661  4479 I WindowManager: WIN DEATH: Window{494d9f3 u0 com.chiller3.custota/com.chiller3.custota.settings.SettingsActivity}
08-17 14:19:24.126  1661  3471 I ActivityManager: Process com.chiller3.custota (pid 8043) has died: fg  TOP 
08-17 14:19:24.126  1661  4479 W InputManager-JNI: Input channel object '494d9f3 com.chiller3.custota/com.chiller3.custota.settings.SettingsActivity (client)' was disposed without first being removed with the input manager!
08-17 14:19:24.127   617   617 W libprocessgroup: Failed to apply NoResetUclampGrp task profile: No such process
08-17 14:19:24.127   617   617 W powerhal-libperfmgr: Failed to set NoResetUclampGrp task profile for tid:8076
08-17 14:19:24.127   617   617 W libprocessgroup: Failed to apply NoResetUclampGrp task profile: No such process
08-17 14:19:24.127   617   617 W powerhal-libperfmgr: Failed to set NoResetUclampGrp task profile for tid:8077
08-17 14:19:24.127   617   617 W libprocessgroup: Failed to apply NoResetUclampGrp task profile: No such process
08-17 14:19:24.127   617   617 W powerhal-libperfmgr: Failed to set NoResetUclampGrp task profile for tid:8060
08-17 14:19:24.127   617   617 W powerhal-libperfmgr: sched_setattr failed for thread 8076, err=3
08-17 14:19:24.127   617   617 W powerhal-libperfmgr: sched_setattr failed for thread 8077, err=3
08-17 14:19:24.127   617   617 W powerhal-libperfmgr: sched_setattr failed for thread 8060, err=3
08-17 14:19:24.130   958   958 I Zygote  : Process 8043 exited due to signal 9 (Killed)
08-17 14:19:24.130  1661  1740 I libprocessgroup: Successfully killed process cgroup uid 10245 pid 8043 in 0ms
08-17 14:19:24.154  1661  1715 W WindowManager: Failed to deliver inset state change to w=Window{494d9f3 u0 com.chiller3.custota/com.chiller3.custota.settings.SettingsActivity EXITING}
08-17 14:19:24.154  1661  1715 W WindowManager: android.os.DeadObjectException
08-17 14:19:24.154  1661  1715 W WindowManager: 	at android.os.BinderProxy.transactNative(Native Method)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at android.os.BinderProxy.transact(BinderProxy.java:584)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at android.view.IWindow$Stub$Proxy.insetsControlChanged(IWindow.java:473)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.WindowState.notifyInsetsControlChanged(WindowState.java:4011)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.InsetsStateController.lambda$notifyPendingInsetsControlChanged$4(InsetsStateController.java:351)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.InsetsStateController.$r8$lambda$An2IoiA3BeA5IWc6QwBOjKArM80(Unknown Source:0)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.InsetsStateController$$ExternalSyntheticLambda3.run(Unknown Source:2)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.WindowAnimator.executeAfterPrepareSurfacesRunnables(WindowAnimator.java:345)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:832)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:777)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:177)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:126)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:115)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at android.os.Handler.handleCallback(Handler.java:942)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at android.os.Handler.dispatchMessage(Handler.java:99)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at android.os.Looper.loopOnce(Looper.java:201)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at android.os.Looper.loop(Looper.java:288)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at android.os.HandlerThread.run(HandlerThread.java:67)
08-17 14:19:24.154  1661  1715 W WindowManager: 	at com.android.server.ServiceThread.run(ServiceThread.java:44)
08-17 14:19:24.155  1661  1715 W WindowManager: Exception thrown during dispatchAppVisibility Window{494d9f3 u0 com.chiller3.custota/com.chiller3.custota.settings.SettingsActivity EXITING}
08-17 14:19:24.155  1661  1715 W WindowManager: android.os.DeadObjectException
08-17 14:19:24.155  1661  1715 W WindowManager: 	at android.os.BinderProxy.transactNative(Native Method)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at android.os.BinderProxy.transact(BinderProxy.java:584)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at android.view.IWindow$Stub$Proxy.dispatchAppVisibility(IWindow.java:536)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.WindowState.sendAppVisibilityToClients(WindowState.java:3478)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.WindowContainer.sendAppVisibilityToClients(WindowContainer.java:1234)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.WindowToken.setClientVisible(WindowToken.java:392)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.ActivityRecord.setClientVisible(ActivityRecord.java:6825)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.ActivityRecord.onAnimationFinished(ActivityRecord.java:7647)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.ActivityRecord.postApplyAnimation(ActivityRecord.java:5508)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5468)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5472)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.AppTransitionController.handleClosingApps(AppTransitionController.java:1194)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.AppTransitionController.handleAppTransitionReady(AppTransitionController.java:304)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.RootWindowContainer.checkAppTransitionReady(RootWindowContainer.java:970)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:834)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:777)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:177)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:126)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:115)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at android.os.Handler.handleCallback(Handler.java:942)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at android.os.Handler.dispatchMessage(Handler.java:99)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at android.os.Looper.loopOnce(Looper.java:201)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at android.os.Looper.loop(Looper.java:288)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at android.os.HandlerThread.run(HandlerThread.java:67)
08-17 14:19:24.155  1661  1715 W WindowManager: 	at com.android.server.ServiceThread.run(ServiceThread.java:44)
08-17 14:19:24.155  1661  1715 I Process : Sending signal. PID: 8043 SIG: 9
08-17 14:19:24.157  2440  2553 D QuickstepModelDelegate: notifyAppTargetEvent action=1 launchLocation=
08-17 14:19:24.158  1661  1715 W InputManager-JNI: Input channel object '80c8d02 Splash Screen com.chiller3.custota (client)' was disposed without first being removed with the input manager!
08-17 14:19:24.168  1661  1714 W ActivityManager: setHasOverlayUi called on unknown pid: 8043
08-17 14:19:24.170   451   451 E ClientCache: failed to get buffer, invalid process token
08-17 14:19:24.172   451   451 E BpTransactionCompletedListener: Failed to transact (-32)
08-17 14:19:24.183  3732  3732 I GoogleInputMethodService: GoogleInputMethodService.onFinishInput():3228 
08-17 14:19:24.195  3196  3849 I AiAiEcho: Predicting[7]: { Feature:1, creation:2023-08-17T06:53:57.019Z, expiry:2023-08-17T07:00:00Z, isExpired: true}, { Feature:1, creation:2023-08-17T07:00:00Z, expiry:2023-08-17T08:00:00Z, isExpired: false}, { Feature:1, creation:2023-08-17T08:00:00Z, expiry:2023-08-17T08:00:00Z, isExpired: true}, { Feature:1, creation:2023-08-17T09:00:00Z, expiry:2023-08-17T09:00:00Z, isExpired: true}, { Feature:1, creation:2023-08-17T10:00:00Z, expiry:2023-08-17T10:00:00Z, isExpired: true}, { Feature:1, creation:2023-08-17T11:00:00Z, expiry:2023-08-17T11:00:00Z, isExpired: true}, { Feature:1, creation:2023-08-17T12:00:00Z, expiry:2023-08-17T12:00:00Z, isExpired: true} [CONTEXT sampling_count=5 ]

Binary Transparency

Rather than relying on a single server, would it be possible to check other servers to verify that the resulting builds are identical to one on your configured server? Basically to create a web of verification and reduce attack surface.

Custota app randomly crashes on background on Android 14 Beta 5.2

My device is Pixel 7a lynx with Android 14 Beta 5.2 and lynx_beta-upb5.230623.006-factory-de16f61a.zip from Google with KernelSU's android13-5.10.177_2023-06-boot.img.
I randomly received toast messages that Custota crashed on background. Logcat:

08-28 18:40:50.072 13428 13428 D nativeloader: Configuring clns-shared-4 for other apk /system/priv-app/com.chiller3.custota/app-release.apk. target_sdk_version=33, uses_libraries=, library_path=/system/priv-app/com.chiller3.custota/lib/arm64:/system/priv-app/com.chiller3.custota/app-release.apk!/lib/arm64-v8a:/system/lib64:/system_ext/lib64, permitted_path=/data:/mnt/expand:/data/user/0/com.chiller3.custota:/system/priv-app/com.chiller3.custota:/system/lib64:/system_ext/lib64
08-28 18:40:50.076  1714  1714 D ActivityManager: sync unfroze 9875 org.mozilla.firefox:tab12 for 6
08-28 18:40:50.081  1714  5540 W JobScheduler: Job didn't exist in JobStore: a9920f #u0a147/9 com.google.android.carrier/.CheckinService
08-28 18:40:50.085 13428 13428 V GraphicsEnvironment: Currently set values for:
08-28 18:40:50.085 13428 13428 V GraphicsEnvironment:   angle_gl_driver_selection_pkgs=[]
08-28 18:40:50.085 13428 13428 V GraphicsEnvironment:   angle_gl_driver_selection_values=[]
08-28 18:40:50.085 13428 13428 V GraphicsEnvironment: ANGLE GameManagerService for com.chiller3.custota: false
08-28 18:40:50.085 13428 13428 V GraphicsEnvironment: com.chiller3.custota is not listed in per-application setting
08-28 18:40:50.086 13428 13428 V GraphicsEnvironment: Neither updatable production driver nor prerelease driver is supported.
08-28 18:40:50.092  1714  5540 D CompatibilityChangeReporter: Compat change id reported: 161145287; UID 10147; state: DISABLED
08-28 18:40:50.092  5574 13452 W fb4a.ContextScope: Warning: Memory Leak Likely! Caching values for context: com.facebook.papaya.fb.client.services.FBPapayaJobService@b70b246
08-28 18:40:50.092  5574 13452 W fb4a.ContextScope:  You should make this context implement the PropertyBag interface to avoid this leak
08-28 18:40:50.098 13428 13428 D CompatibilityChangeReporter: Compat change id reported: 194532703; UID 10244; state: ENABLED
08-28 18:40:50.098 13428 13428 D CompatibilityChangeReporter: Compat change id reported: 253665015; UID 10244; state: DISABLED
08-28 18:40:50.099 13428 13428 I UpdaterJob: Job already exists and is unchanged: (job:2/com.chiller3.custota/.updater.UpdaterJob)
08-28 18:40:50.099  1714  5237 I ActivityManager: Flag disabled. Ignoring finishAttachApplication from uid: 10244. pid: 13428
08-28 18:40:50.114  1714  5540 I ActivityManager: Background started FGS: Allowed [callingPackage: com.chiller3.custota; callingUid: 10244; uidState: TRNB; uidBFSL: n/a; intent: Intent { act=com.chiller3.custota.updater.UpdaterService.start cmp=com.chiller3.custota/.updater.UpdaterService (has extras) }; code:SYSTEM_ALLOW_LISTED; tempAllowListReason:<,reasonCode:SYSTEM_ALLOW_LISTED,duration:9223372036854775807,callingUid:-1>; targetSdkVersion:33; callerTargetSdkVersion:33; startForegroundCount:0; bindFromPackage:null: isBindService:false]
08-28 18:40:50.122  1714  5540 D ActivityManager: sync unfroze 6249 com.google.android.apps.turbo for 6
08-28 18:40:50.125 13428 13428 D UpdaterService: Received intent: Intent { act=com.chiller3.custota.updater.UpdaterService.start cmp=com.chiller3.custota/.updater.UpdaterService (has extras) }
08-28 18:40:50.125 13428 13428 D UpdaterService: Updating foreground notification for state: null
08-28 18:40:50.125 13428 13428 D CompatibilityChangeReporter: Compat change id reported: 160794467; UID 10244; state: ENABLED
08-28 18:40:50.127  1714  5540 D CompatibilityChangeReporter: Compat change id reported: 170668199; UID 10244; state: ENABLED
08-28 18:40:50.127  1714  5540 W ActivityManager: Foreground service started from background can not have location/camera/microphone access: service com.chiller3.custota/.updater.UpdaterService
08-28 18:40:50.127  1714  5540 D CompatibilityChangeReporter: Compat change id reported: 255038118; UID 10244; state: DISABLED
08-28 18:40:50.127  1714  5540 D CompatibilityChangeReporter: Compat change id reported: 255042465; UID 10244; state: DISABLED
08-28 18:40:50.128 13428 13428 D UpdaterService: Creating new updater thread
08-28 18:40:50.129 13428 13428 D UpdaterService: Updating foreground notification for state: null
08-28 18:40:50.131  1714  5540 W ActivityManager: Foreground service started from background can not have location/camera/microphone access: service com.chiller3.custota/.updater.UpdaterService
08-28 18:40:50.134 13428 13428 W UpdaterService: Failed to handle intent: Intent { act=com.chiller3.custota.updater.UpdaterService.start cmp=com.chiller3.custota/.updater.UpdaterService (has extras) }
08-28 18:40:50.134 13428 13428 W UpdaterService: java.lang.reflect.InvocationTargetException
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at java.lang.reflect.Method.invoke(Native Method)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at com.chiller3.custota.updater.UpdaterThread.<init>(Unknown Source:30)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at com.chiller3.custota.updater.UpdaterService.startUpdate(Unknown Source:70)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at com.chiller3.custota.updater.UpdaterService.onStartCommand(Unknown Source:51)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4821)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at android.app.ActivityThread.-$$Nest$mhandleServiceArgs(Unknown Source:0)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2289)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at android.os.Handler.dispatchMessage(Handler.java:106)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at android.os.Looper.loopOnce(Looper.java:205)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at android.os.Looper.loop(Looper.java:294)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at android.app.ActivityThread.main(ActivityThread.java:8177)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at java.lang.reflect.Method.invoke(Native Method)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
08-28 18:40:50.134 13428 13428 W UpdaterService: Caused by: android.os.ServiceManager$ServiceNotFoundException: No service published for: android.os.UpdateEngineService
08-28 18:40:50.134 13428 13428 W UpdaterService: 	at android.os.ServiceManager.getServiceOrThrow(ServiceManager.java:166)
08-28 18:40:50.134 13428 13428 W UpdaterService: 	... 14 more
08-28 18:40:50.134 13428 13428 D AndroidRuntime: Shutting down VM
08-28 18:40:50.135 13428 13428 E AndroidRuntime: FATAL EXCEPTION: main
08-28 18:40:50.135 13428 13428 E AndroidRuntime: Process: com.chiller3.custota, PID: 13428
08-28 18:40:50.135 13428 13428 E AndroidRuntime: java.lang.RuntimeException: Unable to start service com.chiller3.custota.updater.UpdaterService@28405e5 with Intent { act=com.chiller3.custota.updater.UpdaterService.start cmp=com.chiller3.custota/.updater.UpdaterService (has extras) }: java.lang.NullPointerException
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4839)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at android.app.ActivityThread.-$$Nest$mhandleServiceArgs(Unknown Source:0)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2289)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:106)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:205)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:294)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:8177)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: Caused by: java.lang.NullPointerException
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at com.chiller3.custota.updater.UpdaterService.notifyAlert(Unknown Source:187)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at com.chiller3.custota.updater.UpdaterService.onStartCommand(Unknown Source:208)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4821)
08-28 18:40:50.135 13428 13428 E AndroidRuntime: 	... 9 more
08-28 18:40:50.136 13428 13428 E MainApplication: Saving logcat to /storage/emulated/0/Android/data/com.chiller3.custota/files/crash.log due to uncaught exception in Thread[main,5,main]
08-28 18:40:50.136 13428 13428 E MainApplication: java.lang.RuntimeException: Unable to start service com.chiller3.custota.updater.UpdaterService@28405e5 with Intent { act=com.chiller3.custota.updater.UpdaterService.start cmp=com.chiller3.custota/.updater.UpdaterService (has extras) }: java.lang.NullPointerException
08-28 18:40:50.136 13428 13428 E MainApplication: 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4839)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at android.app.ActivityThread.-$$Nest$mhandleServiceArgs(Unknown Source:0)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2289)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at android.os.Handler.dispatchMessage(Handler.java:106)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at android.os.Looper.loopOnce(Looper.java:205)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at android.os.Looper.loop(Looper.java:294)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at android.app.ActivityThread.main(ActivityThread.java:8177)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at java.lang.reflect.Method.invoke(Native Method)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
08-28 18:40:50.136 13428 13428 E MainApplication: Caused by: java.lang.NullPointerException
08-28 18:40:50.136 13428 13428 E MainApplication: 	at com.chiller3.custota.updater.UpdaterService.notifyAlert(Unknown Source:187)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at com.chiller3.custota.updater.UpdaterService.onStartCommand(Unknown Source:208)
08-28 18:40:50.136 13428 13428 E MainApplication: 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4821)
08-28 18:40:50.136 13428 13428 E MainApplication: 	... 9 more

I don't know the issue will remain on official Android 14 but still would like to hear from you.

Can Custota be integrated as a system app manually?

To start, I would like to apologize in advance if I missed anything in the docs that would answer any of my questions, but does Custota support being installed as a system app natively?

Like if I am modifying a ROM manually on my PC prior to signing it with AVBRoot and flashing, can I edit the system partition priv-apps directory to replace the ROM's original Updater.apk with Custota's APK for a more native/seamless integration?

I would probably have to just do what the startup script that changes SELinux does manually in the rom before I rebuild it. But I am doing this to GrapheneOS, so is there anything else I would have to change?

Is there anything else that is recommended to be done in this case to make it more secure? Will this allow the settings link for system updates to work with Custota? Can I pre-configure Custota with an update server URL?

Also I am aware that rooting isn't recommended, but I think it can be done reasonably securely with Kitsune Mask Magisk, which is a fork of Magisk that allows for better GrapheneOS compatibility and supports an SUList.

Or at this point, is it just better to modify GrapheneOS's system updater to reroute to my update server?

Automation?

Is it possible to automate everything? Once CalyxOS releases an update, the image is downloaded onto server and signed then hosted on custota automatically? I'm sure there is a neat way to script everything but it would be nice if there was an "official" way to do it.

feature request - grab OTA file from local storage (via file manager)

Basically what it says on the tin can. Instead of having a proper server for the OTAs, allow custota to be pointed to a local (file on "alleged SD card") or semi-local (LAN FTP accessed via mixplorer) location from which OTA file should be loaded into the custota system, checked, and if everything is fine with them signatures, flashed.

Security implications:
none as far as I can see, since the OTA still has to have correct signatures and follow the general "OTA update logic"

Usecase:
simpler update lifecycle with less hassle with servers-shmervers

Alternatives:
Sideloading OTAs which requires annoying process of entering stock recovery, and at least on two separate occasions have failed inexplicably for me with moderately unpleasant hard-to-resolve consequences (I blame the USB-C cable because if in doubt blame a cable) and is a bit too non-transparent

Custota-with-local-source ability strikes me as a more manageable more transparent and maybe even safer alternative to sideload process with a legitimate usecase :-)

Non-matching update keys

Hey! On my quest to make an automatic update server I've ran into an issue with the Custota app.

When attempting to check for updates over HTTP (not HTTPS in case it matters) I get the following error: UpdaterThread$BadFormatException (csig is not signed by a trusted key)

Despite this issue, I am able to manually sideload the same OTA file (at least two files with the same hash) with those same keys.

Here's the command I am using to generate the ota & csig in case something is desperately wrong:

command = [
    './binaries/avbroot', 'ota', 'patch',
    '--input', f'./downloads/{device_name}-ota.zip',
    '--key-avb', './keys/avb.key',
    '--key-ota', './keys/ota.key',
    '--cert-ota', './keys/ota.crt',
    '--magisk', './downloads/Magisk.apk',
    '--magisk-preinit-device',  preinit_name,
    '--output', f'./downloads/{device_name}-ota.patched.zip'
]
command = [
        './binaries/custota-tool', 'gen-csig',
        '--input', f'./downloads/{device_name}-ota.patched.zip',
        '--key', './keys/ota.key',
        '--cert', './keys/ota.crt',
        '--output', f'./downloads/{device_name}-ota.patched.zip.csig'
]

The server logs also show a request for oriole.json and the csig file so that isn't the issue as well. Any help is much appreciated!!

Crash on GrapheneOS 14

GrapheneOS 14 introduced GrapheneOS/platform_frameworks_base@a350b31, which breaks Custota. The commit unconditionally changes FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED to FOREGROUND_SERVICE_TYPE_SPECIAL_USE for all packages instead of just GMS. When Custota calls:

val type = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
ServiceInfo.FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
} else {
0
}
startForeground(Notifications.ID_PERSISTENT, notification, type)

it crashes with:

java.lang.IllegalArgumentException: foregroundServiceType 0x00000400 is not a subset of foregroundServiceType attribute 0x40000000 in service element of manifest file

because GrapheneOS doesn't also wrap startForeground() calls for all packages.

This is a GrapheneOS bug, but maybe there's something we can do to work around it.

Custota crashes after rebooting after installation on kernelsu

After installing the module in kernelsu it gets installed as com.chiller3.custota.MainAplication it works after adding it in the superuser section, but after rebooting the app doesn't open, to fix it you need to reinstall the apk manually again but after rebooting again it will crash again
custota.txt

Trying to install an update via file path, getting "OS already up to date" message

Basically what it says on the tin can.
I am reasonably (98.9999%) sure I am not mixing things up and using a new file with a recent OTA freshly cooked via AVBRoot.

Why is this happening and how do I solve it ?

EDIT TO ADD:
in debug mode, checking the "allow reinstall" option (without the automatic option of course, lol) allowed me to successfully install the OTA update, it worked splendidly and yes, the update was correct (so there was no error on my part and there is something wrong with how Custota verifies whether update is in fact a "new thingie" in file path mode)

Custota feature to run scripts

I use an on device bash script that I run manually from termux to handle updating & patching Android and Magisk then queue an install from Custota

Using Custota's updating scheduling to run this script automatically would make updating rooted android practically seemless.

Having some way for the script to send Custota notifications/logs would be useful as well.

Also having Custota delete the patched OTA after installation to save storage would be beneficial too.

Weird problem with most recent CalyxOS OTA (March) - claims attempt to downgrade security patch and abort

So long story short I'm updating my CalyxOS on a redfin (Pixel 5)
I grab the OTA from OTA full section of here https://calyxos.org/get/ota/
Full link (stable)
https://release.calyxinstitute.org/redfin-ota_update-24505020.zip

(security-express produces same behavior)

when I try to run OTAtool (recent version) it displays following message

Enter passphrase for "/home/user/avbr/keyman-slave/ota.key":
Verifying OTA signature...
Device name: redfin
Fingerprint: google/redfin/redfin:14/UP1A.231105.001.B2/11260668:user/release-keys
Security patch: 2023-11-05

That's helluva old security patch!

And of course, needless to say, when I attempt to load it up in custota on the phone, it complains of security patch being downgraded and aborts.

What is going on here ?

IOException (Server does not support byte ranges)

Custota App says:

Failed to install OTA update
IOException (Server does not support byte ranges)

When I test my server if it supports byte ranges using curl -I https://p8pro-ota.someserver.de/husky-ota-uq1a.231205.015-c52b44d3.zip. It outputs:

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 21 Dec 2023 ***** GMT
Content-Type: application/zip
Content-Length: 2296984954
...
Accept-Ranges: bytes

Another test using curl -I https://p8pro-ota.someserver.de/husky-ota-uq1a.231205.015-c52b44d3.zip -H "Range: bytes=0-1023" It outputs:

HTTP/1.1 206 Partial Content
Server: nginx
Date: Thu, 21 Dec 2023 ***** GMT
Content-Type: application/zip
Content-Length: 1024
Last-Modified: Thu, 21 Dec 2023 ***** GMT
Connection: keep-alive
...
Content-Range: bytes 0-1023/2296984954

Seems to be supported. Any ideas?

Does this tool have to be used with avbroot?

Since the Pixel is no longer capable of OTA updates after rooting, I wanted to try to utilize this tool to accomplish this.
But I've been trying all day and the problem always occurs with the csig signature, but it's impossible for me to get google's private key to sign the csig, which confuses me, does this tool have to be used with avbroot?

Can we remove these 2 lines in AndroidManifest.xml?

Hi!
After building the .apk file and opening it by APK Editor Studio, I saw these 2 lines exist in the AndroidManifest.xml.
<uses-library android:name="androidx.window.extensions" android:required="false"/> <uses-library android:name="androidx.window.sidecar" android:required="false"/>

I'd like to remove them. Do you know how to resolve it?
Thank you.

Screenshot 2024-03-22 at 20 41 29

SDK must be >=33

I tired this module,install failed,.
It required SDK>=33.
My device sdk is 30. But support vab.
So what's the problem with Android 12๏ผŸ

Custota manual is outdated

Hello. Thank you for a great app and your efforts to quickly fix things to work with new Android 14!

Today I ran my automatic script to generate a new OTA using avbroot and custota-tool because there is new KernelSU release :)
The script checks and downloads latest avbroot and custota-tool binaries, avbroot successfully generated the OTA zip but custotal failed to generate .cig file:

error: unrecognized subcommand 'gen-csig'

Usage: custota-tool <COMMAND>

For more information, try '--help'.
error: unrecognized subcommand 'gen-update-info'

Usage: custota-tool <COMMAND>

For more information, try '--help'.

I read the CHANGELOG but there is no information about how to generate .csig file to let Custota app to work(maybe it has been changed?). custota-tool command manual doesn't mention it either.

Would you mind updating the manual please? Thank you!

Android 14 QPR2's update_engine uses /system/etc/security/cacerts

Android 14 QPR2 includes https://android.googlesource.com/platform/system/update_engine/+/03c7be5f6096f19784af13d275f4f13f88fd4dd0%5E%21/, which makes update_engine use the standard system CA certificate trust store.

I'm planning to drop our current support for self-signed certificates. There's no longer a way to add a custom CA certificate just for update_engine and Custota should not modify /system/etc/security/cacerts since that will impact the entire system.

Users who need self-signed certificates can flash their own Magisk module that explicitly adds their certificate to /system/etc/security/cacerts. I'll add a new subcommand to custota-tool for generating such a module.

avbroot signing

Hi, I signed my original ROM with avbroot <3.0.0 but my most recent OTA was signed with 3.0.0 is it possible to use custota without unlocking my bootloader again (necessitating a wipe)? I noticed in the app it shows "no certificates found" so I'm assuming not but I just wanted to make sure before I wiped my phone again due to the inconvenience.

caddy: Error: unknown shorthand flag: 'a' in -access-log

Hi, thank you for your excellent work with very detailed documentation!

Yesterday I bought a new Pixel 7a(lynx) and and immediately tried Cusota. I successfully created .csig and json files but when trying to run caddy server I encountered:

> sudo caddy file-server -access-log -listen :8080
Error: unknown shorthand flag: 'a' in -access-log

My caddy version is v2.6.4 on Arch Linux
I have never used caddy and really have no clue.
I also have suggestions:

  • Make the Cusota app hint typing port on the URL(eg. URL:port), it might be not very obvious for some users type in the port.
  • Add details about how often Cusota app automatically checks for update.
  • Add details about "sufficient battery level" by Custota app.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.