GithubHelp home page GithubHelp logo

tobi823 / ffupdater Goto Github PK

View Code? Open in Web Editor NEW
616.0 25.0 32.0 11.32 MB

FFUpdater: Updater for privacy friendly browser

Home Page: https://f-droid.org/en/packages/de.marmaro.krt.ffupdater

License: GNU General Public License v3.0

Kotlin 86.58% HTML 12.31% Python 0.48% JavaScript 0.64%
ffupdater firefox-android firefox-focus firefox-klar firefox-lockwise brave-browser iceraven

ffupdater's People

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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ffupdater's Issues

Crash with self-signed certificate

de.marmaro.krt.ffupdater.InstallActivity$InstallActivityFetchException: fail to fetch BROMITE
	at de.marmaro.krt.ffupdater.InstallActivity$State$5.invokeSuspend(InstallActivity.kt:227)
	at de.marmaro.krt.ffupdater.InstallActivity$State$5.invoke(Unknown Source:10)
	at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1$1.invokeSuspend(InstallActivity.kt:137)
	at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1$1.invoke(Unknown Source:10)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:102)
	at kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:148)
	at kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)
	at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1.invokeSuspend(InstallActivity.kt:133)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	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:491)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
Caused by: de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer$ApiConsumerRetryIOException: Fail to consume API. Previous exceptions: [java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.; java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.; java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.; java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.; java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.]. Last exception:
	at de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer.consumeWithNetworkRetries(ApiConsumer.kt:54)
	at de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer$consumeWithNetworkRetries$1.invokeSuspend(Unknown Source:12)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
	at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:231)
	at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:196)
	at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:153)
	at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
	at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
	at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
	at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
	at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
	at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:248)
	at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:211)
	at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:30)
	at de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer.consume(ApiConsumer.kt:62)
	at de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer.consumeWithNetworkRetries(ApiConsumer.kt:46)
	... 7 more
Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
	at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:658)
	at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:507)
	at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:426)
	at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:354)
	at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
	at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:89)
	at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:224)
	at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:407)
	at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
	at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:387)
	at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:226)
	... 22 more
Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
	... 33 more

Could you please add self-signed certificate support?

auto download in the background

Could we get an option to let the app automatically download updates?
So when I click the notification it just has to install the app and I don't have to wait for it to be downloaded.

Crash when updating Firefox stable

Application crashed with the following stack trace:

android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/de.marmaro.krt.ffupdater/files/Download/download_1614178715571_8575317700450285286.apk exposed beyond app through Intent.getData()
	at android.os.StrictMode.onFileUriExposed(StrictMode.java:1967)
	at android.net.Uri.checkFileUriExposed(Uri.java:2364)
	at android.content.Intent.prepareToLeaveProcess(Intent.java:9778)
	at android.content.Intent.prepareToLeaveProcess(Intent.java:9732)
	at android.app.Instrumentation.execStartActivity(Instrumentation.java:1679)
	at android.app.Activity.startActivityForResult(Activity.java:4482)
	at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:584)
	at android.app.Activity.startActivityForResult(Activity.java:4440)
	at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:570)
	at de.marmaro.krt.ffupdater.installer.IntentInstaller.installInternal(IntentInstaller.kt:60)
	at de.marmaro.krt.ffupdater.installer.IntentInstaller.install(IntentInstaller.kt:38)
	at de.marmaro.krt.ffupdater.InstallActivity$State$10.invokeSuspend(InstallActivity.kt:256)
	at de.marmaro.krt.ffupdater.InstallActivity$State$10.invoke(Unknown Source:10)
	at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1$1.invokeSuspend(InstallActivity.kt:113)
	at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1$1.invoke(Unknown Source:10)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:102)
	at kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:148)
	at kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)
	at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1.invokeSuspend(InstallActivity.kt:109)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at android.os.Handler.handleCallback(Handler.java:789)
	at android.os.Handler.dispatchMessage(Handler.java:98)
	at android.os.Looper.loop(Looper.java:164)
	at android.app.ActivityThread.main(ActivityThread.java:6797)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:772)

Crashes on install

The app has successfully downloads Firefox Klar, verified checksum, but if i pouch the button Install, it attempted an installation and crashes.

It happens both with FF installed (directly from the link) and if I try to install FF with the FFupdater.

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.content.pm.action.CONFIRM_PERMISSIONS pkg=com.android.packageinstaller (has extras) }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1836)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1556)
at android.app.Activity.startActivityForResult(Activity.java:3787)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:675)
at android.app.Activity.startActivityForResult(Activity.java:3744)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:662)
at android.app.Activity.startActivity(Activity.java:4096)
at android.app.Activity.startActivity(Activity.java:4026)
at de.marmaro.krt.ffupdater.InstallActivity.onNewIntent(InstallActivity.java:324)
at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1234)
at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1246)
at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:2639)
at android.app.ActivityThread.performNewIntents(ActivityThread.java:2651)
at android.app.ActivityThread.handleNewIntent(ActivityThread.java:2660)
at android.app.ActivityThread.access$1600(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1518)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5528)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:952)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)

Crash on Android 7, Lineage OS

After clicking the "install" button.
ffupdater version: 71.0.2

android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/de.marmaro.krt.ffupdater/files/Download/download_1615533914771_123742997906281366.apk exposed beyond app through Intent.getData()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1796)
at android.net.Uri.checkFileUriExposed(Uri.java:2354)
at android.content.Intent.prepareToLeaveProcess(Intent.java:8981)
at android.content.Intent.prepareToLeaveProcess(Intent.java:8942)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1519)
at android.app.Activity.startActivityForResult(Activity.java:4229)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:584)
at android.app.Activity.startActivityForResult(Activity.java:4187)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:570)
at de.marmaro.krt.ffupdater.installer.IntentInstaller.installInternal(IntentInstaller.kt:64)
at de.marmaro.krt.ffupdater.installer.IntentInstaller.install(IntentInstaller.kt:40)
at de.marmaro.krt.ffupdater.InstallActivity$State$10.invokeSuspend(InstallActivity.kt:283)
at de.marmaro.krt.ffupdater.InstallActivity$State$10.invoke(InstallActivity.kt)
at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1$1.invokeSuspend(InstallActivity.kt:136)
at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1$1.invoke(InstallActivity.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:102)
at kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:148)
at kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)
at de.marmaro.krt.ffupdater.InstallActivity$restartStateMachine$1.invokeSuspend(InstallActivity.kt:132)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

App crash: downloading Brave

I just installed the newest version of the app from F-Droid, and then tried upgrading Brave. Stack trace below.

Device: rooted Android 8, LG G6 (H472)

kotlin.io.FileAlreadyExistsException: /storage/emulated/0/Android/data/de.marmaro.krt.ffupdater/files/Download/BRAVE__2021_06_02__416095783.apk -> /storage/emulated/0/Android/data/de.marmaro.krt.ffupdater/cache/Download/BRAVE__2021_06_02__416095783.apk: The destination file already exists.
at kotlin.io.FilesKt__UtilsKt.copyTo(Utils.kt:224)
at kotlin.io.FilesKt__UtilsKt.copyTo$default(Utils.kt:217)
at de.marmaro.krt.ffupdater.download.DownloadedApkCache.copyFileToCache(DownloadedApkCache.kt:20)
at de.marmaro.krt.ffupdater.InstallActivity$State$8.invokeSuspend(InstallActivity.kt:283)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6710)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

FFupdater download duplicated

When the user attempts to update via pressing a notification triggered by the automatic check in background, Android's download manager indicates 2 downloads in progress, not one.
Other than this I realized the download time seems to be longer than usual, So I believe this isn't a issue from Android's download manager, and there is actually 2 downloads in progress.
However, this issues doesn't occur when the application is active(on screen) and it downloads just 1 file for update even when the user updates via pressing the notification.
This is not a issue that happens rarely, I use Firefox nightly, therefore I experienced this issue every time I tried to update by just pressing the update notification.

cannot exclude brave

Hi, I tried installing/updating brave via FFUpdater, but for some reason the download seems to be slow/fails every time, so I instead chose to install via aurora store, but FFUpdater is now bugging me with update notifications and I've noticed that even though there's an option to exclude apps from the automatic update check, it doesn't contain the brave browser

New UI

The UI must be changed to support/update multiple browser at once - for example the app should update both Fennec Release and Fennec Nightly.

After the UI rework, I will add more browsers like Focus/Klar etc. (#1)

Design/UI tips are appreciated.

The cards for Release, Beta, Nightly will be hidden when the corresponding browser is not installed.
current

UpdateCheckException: Fail to check FIREFOX_RELEASE for updates

Got a notification that led to this error, and it can be triggered manually by opening the app and refreshing it.

de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException

de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException: fail to check FIREFOX_RELEASE for updates
at de.marmaro.krt.ffupdater.MainActivity$checkForAppUpdate$1.invokeSuspend(MainActivity.kt:204)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.NullPointerException
at de.marmaro.krt.ffupdater.app.impl.fetch.mozillaci.MozillaCiLogConsumer.updateCheck(MozillaCiLogConsumer.kt:28)
at de.marmaro.krt.ffupdater.app.impl.FirefoxRelease.updateCheckWithoutCaching(FirefoxRelease.kt:39)
at de.marmaro.krt.ffupdater.app.BaseAppDetail$updateCheck$2$1.invokeSuspend(BaseAppDetail.kt:63)
... 6 more

Using latest f-droid version of FFUpdater.

Android Version: 30
Device Manufacturer: motorola
Device Model: moto g(7)

Issue appears different than #52. Second part of the stack trace is the same as #52, there is some extra at the beginning.

Crashing on download

I love the app, but the first time I get an update for firefox, the app is crashing xD
Every time I click the download button the app simply crashes.
Log (idk how paste files via my app oof, im sorry):
<<< log_count = 82 >>>
[05-19 17:58:01.988 939:1263 I/qti_sensors_hal]
processReportInd: 520000 82.000000

[05-19 17:58:05.315 1494:2214 V/InputDispatcher]
Asynchronous input event injection succeeded.

[05-19 17:58:05.415 1494:2214 V/InputDispatcher]
Asynchronous input event injection succeeded.

[05-19 17:58:05.428 2359:2359 V/StatusBar]
mStatusBarWindow: com.android.systemui.statusbar.phone.StatusBarWindowView{bd7425f V.E...... ........ 0,0-1440,84} canPanelBeCollapsed(): false

[05-19 17:58:05.430 1494:2210 I/ActivityTaskManager]
START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 pkg=com.android.launcher3 cmp=com.android.launcher3/.lineage.LineageLauncher (has extras)} from uid 10102

[05-19 17:58:05.457 10379:10379 D/LogcatReader]
[Logcat] onActivityInBackground

[05-19 17:58:05.470 1494:3673 W/ActivityManager]
Unable to start service Intent { act=com.android.launcher3.WINDOW_OVERLAY dat=app://com.android.launcher3:10102?v=9&cv=14 pkg=com.google.android.googlequicksearchbox } U=0: not found

[05-19 17:58:05.529 2359:2359 D/ImageWallpaper]
wallpaper visibility changes to: true

[05-19 17:58:05.549 3771:3771 I/HK/LatinKbdBaseView]
closing org.pocketworkstation.pckeyboard.LatinKeyboardView{a1d7b55 V.ED..... ......ID 0,0-1440,836 #7f080004 app:id/LatinkeyboardBaseView}

[05-19 17:58:05.629 2531:2563 W/System]
A resource failed to call release.

[05-19 17:58:05.629 2531:2563 W/System]
A resource failed to call release.

[05-19 17:58:05.806 652:652 E/Layer]
[Surface(name=AppWindowToken{ed06d44 token=Token{7242e57 ActivityRecord{326cbd6 u0 com.dp.logcatapp/.activities.MainActivity t323}}})/@0xeeab4e7 - animation-leash#0] No local sync point found

[05-19 17:58:05.806 652:652 E/Layer]
[Surface(name=AppWindowToken{ed06d44 token=Token{7242e57 ActivityRecord{326cbd6 u0 com.dp.logcatapp/.activities.MainActivity t323}}})/@0xeeab4e7 - animation-leash#0] No local sync point found

[05-19 17:58:05.806 652:652 E/Layer]
[Surface(name=AppWindowToken{e590b5d token=Token{f3c8134 ActivityRecord{855c07 u0 com.android.launcher3/.lineage.LineageLauncher t232}}})/@0xabcc33d - animation-leash#0] No local sync point found

[05-19 17:58:05.806 652:652 E/Layer]
[Surface(name=AppWindowToken{e590b5d token=Token{f3c8134 ActivityRecord{855c07 u0 com.android.launcher3/.lineage.LineageLauncher t232}}})/@0xabcc33d - animation-leash#0] No local sync point found

[05-19 17:58:05.814 652:652 E/Layer]
[Surface(name=AppWindowToken{ed06d44 token=Token{7242e57 ActivityRecord{326cbd6 u0 com.dp.logcatapp/.activities.MainActivity t323}}})/@0xeeab4e7 - animation-leash#0] No local sync point found

[05-19 17:58:05.814 652:652 E/Layer]
[Surface(name=AppWindowToken{e590b5d token=Token{f3c8134 ActivityRecord{855c07 u0 com.android.launcher3/.lineage.LineageLauncher t232}}})/@0xabcc33d - animation-leash#0] No local sync point found

[05-19 17:58:06.643 1494:3674 I/ActivityTaskManager]
START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10300000 cmp=de.marmaro.krt.ffupdater/.MainActivity} from uid 10102

[05-19 17:58:06.662 1494:1545 E/system_server]
Invalid ID 0x00000000.

[05-19 17:58:06.689 914:914 D/Zygote]
Forked child process 11430

[05-19 17:58:06.692 1494:1565 I/ActivityManager]
Start proc 11430:de.marmaro.krt.ffupdater/u0a198 for activity {de.marmaro.krt.ffupdater/de.marmaro.krt.ffupdater.MainActivity}

[05-19 17:58:06.719 11430:11430 E/o.krt.ffupdate]
Not starting debugger since process cannot load the jdwp agent.

[05-19 17:58:06.736 11430:11430 V/Riru]
hook removed

[05-19 17:58:06.736 11430:11430 V/Riru]
edxp: forkAndSpecializePost

[05-19 17:58:06.780 913:12854 I/netd]
bandwidthAddNiceApp(10198) <4.05ms>

[05-19 17:58:07.025 11430:11430 I/MainActivity]
enable StrictMode for everyday usage to prevent unencrypted data connection

[05-19 17:58:07.050 11430:11430 W/MainActivity]
disableApps: [FIREFOX_KLAR, FENIX, FIREFOX_FOCUS, FIREFOX_LITE]

[05-19 17:58:07.050 11430:11430 W/MainActivity]
checkInterval: 360

[05-19 17:58:07.050 11430:11430 W/MainActivity]
automaticCheck: true

[05-19 17:58:07.063 11430:11457 D/NetworkSecurityConfig]
No Network Security Config specified, using platform default

[05-19 17:58:07.094 11430:11451 I/Adreno]
QUALCOMM build : cf6f28e, I1fbdd7a9d4
Build Date : 02/28/19
OpenGL ES Shader Compiler Version: EV031.25.03.02
Local Branch : mybranche93b5c3a-ead7-f1e6-b2ac-5cb90179c3e0
Remote Branch : quic/gfx-adreno.lnx.1.0.r49-rel
Remote Branch : NONE
Reconstruct Branch : NOTHING

[05-19 17:58:07.094 11430:11451 I/Adreno]
Build Config : S L 6.0.7 AArch64

[05-19 17:58:07.099 11430:11451 I/Adreno]
PFP: 0x005ff112, ME: 0x005ff066

[05-19 17:58:07.100 2359:2359 D/ImageWallpaper]
wallpaper visibility changes to: false

[05-19 17:58:07.101 11430:11451 E/libEGL]
Driver indicates EGL 1.5 support, but does not have a critical API

[05-19 17:58:07.104 652:652 E/Layer]
[Surface(name=AppWindowToken{f552634 token=Token{6b57507 ActivityRecord{88b3f46 u0 de.marmaro.krt.ffupdater/.MainActivity t324}}})/@0x520d291 - animation-leash#0] No local sync point found

[05-19 17:58:07.104 652:652 E/Layer]
[Surface(name=AppWindowToken{e590b5d token=Token{f3c8134 ActivityRecord{855c07 u0 com.android.launcher3/.lineage.LineageLauncher t232}}})/@0xabcc33d - animation-leash#0] No local sync point found

[05-19 17:58:07.105 913:11459 E/ResolverController]
No valid NAT64 prefix (198, /0)

[05-19 17:58:07.112 652:652 E/Layer]
[Surface(name=AppWindowToken{f552634 token=Token{6b57507 ActivityRecord{88b3f46 u0 de.marmaro.krt.ffupdater/.MainActivity t324}}})/@0x520d291 - animation-leash#0] No local sync point found

[05-19 17:58:07.112 652:652 E/Layer]
[Surface(name=AppWindowToken{e590b5d token=Token{f3c8134 ActivityRecord{855c07 u0 com.android.launcher3/.lineage.LineageLauncher t232}}})/@0xabcc33d - animation-leash#0] No local sync point found

[05-19 17:58:07.132 610:610 I/hwservicemanager]
getTransport: Cannot find entry [email protected]::IMapper/default in either framework or device manifest.

[05-19 17:58:07.132 11430:11451 W/Gralloc3]
mapper 3.x is not supported

[05-19 17:58:07.162 1494:1563 I/ActivityTaskManager]
Displayed de.marmaro.krt.ffupdater/.MainActivity: +514ms

[05-19 17:58:07.183 3771:3771 I/HK/LatinKbdBaseView]
closing org.pocketworkstation.pckeyboard.LatinKeyboardView{a1d7b55 V.ED..... ......ID 0,0-1440,836 #7f080004 app:id/LatinkeyboardBaseView}

[05-19 17:58:07.208 11430:11463 D/Notificator]
start background update check

[05-19 17:58:07.274 11430:11460 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=68e806aa-7843-4605-beef-b65258de6395, tags={ de.marmaro.krt.ffupdater.notification.Notificator } ]

[05-19 17:58:07.652 939:1263 I/qti_sensors_hal]
processReportInd: X: -0.016754 Y: 0.057465 Z: 9.849747

[05-19 17:58:08.543 1494:25379 I/ActivityTaskManager]
START u0 {cmp=de.marmaro.krt.ffupdater/.InstallActivity (has extras)} from uid 10198

[05-19 17:58:08.585 11430:11430 W/ActivityThread]
handleWindowVisibility: no activity for token android.os.BinderProxy@35977da

[05-19 17:58:08.701 11430:11430 D/AndroidRuntime]
Shutting down VM

[05-19 17:58:08.702 11430:11430 E/AndroidRuntime]
FATAL EXCEPTION: main
Process: de.marmaro.krt.ffupdater, PID: 11430
java.lang.RuntimeException: Unable to start activity ComponentInfo{de.marmaro.krt.ffupdater/de.marmaro.krt.ffupdater.InstallActivity}: java.util.IllegalFormatConversionException: a != java.lang.String
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
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:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
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:491)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.util.IllegalFormatConversionException: a != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4403)
at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2898)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2845)
at java.util.Formatter.format(Formatter.java:2530)
at java.util.Formatter.format(Formatter.java:2459)
at java.lang.String.format(String.java:2911)
at android.content.res.Resources.getString(Resources.java:485)
at android.content.Context.getString(Context.java:655)
at de.marmaro.krt.ffupdater.InstallActivity.y(Unknown Source:44)
at de.marmaro.krt.ffupdater.InstallActivity.E(Unknown Source:8)
at de.marmaro.krt.ffupdater.InstallActivity.onCreate(Unknown Source:118)
at android.app.Activity.performCreate(Activity.java:7824)
at android.app.Activity.performCreate(Activity.java:7813)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
... 11 more

[05-19 17:58:08.707 1494:2210 W/ActivityTaskManager]
Force finishing activity de.marmaro.krt.ffupdater/.InstallActivity

[05-19 17:58:08.708 1494:11470 I/DropBoxManagerService]
add tag=data_app_crash isTagEnabled=true flags=0x2

[05-19 17:58:08.728 1494:2210 W/ActivityTaskManager]
Force finishing activity de.marmaro.krt.ffupdater/.MainActivity

[05-19 17:58:08.740 1494:1540 I/ActivityManager]
Showing crash dialog for package de.marmaro.krt.ffupdater u0

[05-19 17:58:08.841 2359:2376 I/ndroid.systemu]
NativeAlloc concurrent copying GC freed 7888(464KB) AllocSpace objects, 0(0B) LOS objects, 75% free, 9440KB/36MB, paused 62us total 102.603ms

[05-19 17:58:09.225 1494:1544 W/ActivityTaskManager]
Activity top resumed state loss timeout for ActivityRecord{d9fa2fb u0 de.marmaro.krt.ffupdater/.InstallActivity t324 f}

[05-19 17:58:09.226 1494:1544 W/ActivityTaskManager]
Activity pause timeout for ActivityRecord{d9fa2fb u0 de.marmaro.krt.ffupdater/.InstallActivity t324 f}

[05-19 17:58:09.282 1494:4873 W/ActivityManager]
Unable to start service Intent { act=com.android.launcher3.WINDOW_OVERLAY dat=app://com.android.launcher3:10102?v=9&cv=14 pkg=com.google.android.googlequicksearchbox } U=0: not found

[05-19 17:58:09.321 2359:2359 D/ImageWallpaper]
wallpaper visibility changes to: true

[05-19 17:58:09.352 913:12854 I/netd]
bandwidthRemoveNiceApp(10198) <6.74ms>

[05-19 17:58:09.807 1494:2210 W/ActivityTaskManager]
Force finishing activity de.marmaro.krt.ffupdater/.InstallActivity

[05-19 17:58:09.810 1494:2210 W/ActivityTaskManager]
Force finishing activity de.marmaro.krt.ffupdater/.MainActivity

[05-19 17:58:09.814 1494:8439 D/OpenGLRenderer]
endAllActiveAnimators on 0x7931eac000 (RippleDrawable) with handle 0x79b5baa8c0

[05-19 17:58:09.861 1494:3674 E/InputDispatcher]
Window handle Window{36d1f9a u0 Application Error: de.marmaro.krt.ffupdater} has no registered input channel

[05-19 17:58:09.868 1494:2210 I/ActivityManager]
Killing 11430:de.marmaro.krt.ffupdater/u0a198 (adj 900): crash

[05-19 17:58:09.897 3771:3771 I/HK/LatinKbdBaseView]
closing org.pocketworkstation.pckeyboard.LatinKeyboardView{a1d7b55 V.ED..... ......ID 0,0-1440,836 #7f080004 app:id/LatinkeyboardBaseView}

[05-19 17:58:09.939 914:914 I/Zygote]
Process 11430 exited due to signal 9 (Killed)

[05-19 17:58:09.940 1494:1544 W/ActivityManager]
setHasOverlayUi called on unknown pid: 11430

[05-19 17:58:09.943 1494:1567 I/libprocessgroup]
Successfully killed process cgroup uid 10198 pid 11430 in 73ms

[05-19 17:58:10.316 1494:2214 V/InputDispatcher]
Asynchronous input event injection succeeded.

[05-19 17:58:10.414 1494:2214 V/InputDispatcher]
Asynchronous input event injection succeeded.

[05-19 17:58:10.422 2359:2359 V/StatusBar]
mStatusBarWindow: com.android.systemui.statusbar.phone.StatusBarWindowView{bd7425f V.E...... ........ 0,0-1440,84} canPanelBeCollapsed(): false

[05-19 17:58:10.832 1494:3619 E/TaskPersister]
File error accessing recents directory (directory doesn't exist?).

[05-19 17:58:11.552 10379:10379 D/LogcatReader]
[Logcat] onActivityInForeground

[05-19 17:58:11.552 10379:10379 D/LogcatReader]
[Logcat] Posting pending logs

[05-19 17:58:11.597 10379:10379 D/LogcatReader]
[LogcatLiveFragment] onServiceConnected

[05-19 17:58:11.602 1494:1563 W/system_server]
Insufficient pre-allocated space to mmap vdex.

[05-19 17:58:11.606 3771:3771 I/HK/LatinKbdBaseView]
closing org.pocketworkstation.pckeyboard.LatinKeyboardView{a1d7b55 V.ED..... ......ID 0,0-1440,836 #7f080004 app:id/LatinkeyboardBaseView}

[05-19 17:58:11.849 2359:2359 D/ImageWallpaper]
wallpaper visibility changes to: false

[05-19 17:58:11.876 652:652 E/Layer]
[Surface(name=AppWindowToken{e590b5d token=Token{f3c8134 ActivityRecord{855c07 u0 com.android.launcher3/.lineage.LineageLauncher t232}}})/@0xabcc33d - animation-leash#0] No local sync point found

[05-19 17:58:11.876 652:652 E/Layer]
[Surface(name=AppWindowToken{ed06d44 token=Token{7242e57 ActivityRecord{326cbd6 u0 com.dp.logcatapp/.activities.MainActivity t323}}})/@0xeeab4e7 - animation-leash#0] No local sync point found

Can you help me?

Hash verification fails (Firefox and Firefox Preview)

Sorry, another issue.

The hash verification seems to fail for some updates. It seems that it can't hash the file correctly.
After the download the app prints an error message :

Download is NOT verified
The SHA256 hash for the file should have been:
---hash---
But it was:
---blank---
Either a hacker has replaced the correct download with an altered download or...

(translated from another language)
There is no value for what I think should be the calculated hash.
It happened for Firefox Preview 4.00 as well as Firefox 68.8.1

Version of the app: 68.2 (f-droid)
Android version: 9 (LineageOS 16.0)

FF Updater is unable to check for updates.

java.lang.NullPointerException at MozillaCiLogConsumer.kt:28
java.lang.NullPointerException

java.lang.NullPointerException
at de.marmaro.krt.ffupdater.app.impl.fetch.mozillaci.MozillaCiLogConsumer.updateCheck(MozillaCiLogConsumer.kt:28)
at de.marmaro.krt.ffupdater.app.impl.FirefoxRelease.updateCheckWithoutCaching(FirefoxRelease.kt:39)
at de.marmaro.krt.ffupdater.app.BaseAppDetail$updateCheck$$inlined$withLock$lambda$1.invokeSuspend(BaseAppDetail.kt:63)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Android Version: 28
Device Manufacturer: OPPO
Device Model: CPH2083

App Crashes whenever I pull down to refresh

`
de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException at MainActivity.kt:204
de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException

de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException: fail to check FIREFOX_BETA for updates
at de.marmaro.krt.ffupdater.MainActivity$checkForAppUpdate$1.invokeSuspend(MainActivity.kt:204)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.NullPointerException
at de.marmaro.krt.ffupdater.app.impl.fetch.mozillaci.MozillaCiLogConsumer.updateCheck(MozillaCiLogConsumer.kt:28)
at de.marmaro.krt.ffupdater.app.impl.FirefoxBeta.updateCheckWithoutCaching(FirefoxBeta.kt:39)
at de.marmaro.krt.ffupdater.app.BaseAppDetail$updateCheck$$inlined$withLock$lambda$1.invokeSuspend(BaseAppDetail.kt:63)
... 6 more

Android Version: 28
Device Manufacturer: HUAWEI
Device Model: BND-AL10
`

Crash on Android 8

FFUpdater 71.0.3 crashed on Android 8 with the following trace:

de.marmaro.krt.ffupdater.notification.BackgroundUpdateChecker$BackgroundNetworkException: fail to check FIREFOX_RELEASE due to cancelled job
	at de.marmaro.krt.ffupdater.notification.BackgroundUpdateChecker.doBackgroundCheck(BackgroundUpdateChecker.kt:47)
	at de.marmaro.krt.ffupdater.notification.BackgroundUpdateChecker$doBackgroundCheck$1.invokeSuspend(Unknown Source:11)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: kotlinx.coroutines.JobCancellationException: Job was cancelled; job=JobImpl{Cancelling}@deedef3

Add support for resuming

Ability switch between networks and resume downloads. Periodically check if the download was interrupted, and resume.

Recurring crash with Firefox Nightly

I'm seeing this on a Nexus 6 running LineageOS 17.1

Here's the trace:

java.lang.RuntimeException: Unable to resume activity {de.marmaro.krt.ffupdater/de.marmaro.krt.ffupdater.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4205)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4237)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
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:491)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
Caused by: java.lang.NullPointerException
at de.marmaro.krt.ffupdater.app.impl.FirefoxNightly.getDisplayInstalledVersion(FirefoxNightly.kt:38)
at de.marmaro.krt.ffupdater.MainActivity.initUI(MainActivity.kt:129)
at de.marmaro.krt.ffupdater.MainActivity.onResume(MainActivity.kt:82)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1453)
at android.app.Activity.performResume(Activity.java:7958)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4195)
... 11 more

I'm only reporting in case this might be a problem unrelated to my weird platform. But if you want to just mark this closed because there's no chance you can reproduce it, I understand.

Firefox Preview : impossible to retrieve url from Github error

Hi, thanks for the new version ! Great improvement in quality and usefulness ! The download works for "classic" Firefox .

Unfortunately, the app fails to retrieve the download link for Firefox Preview.
Instead there are 2 error messages :
"Impossible to retrieve the url from Github" (translation to English from another language)
"Installation of the app has not succeeded. You can close this screen." (translation to English from anther language)

Same result for Firefox Preview 4.5.0 a few days ago and 5.0.0 now.

Version of the app: 68.0 (f-droid)
Android version: 9 (LineageOS 16.0)

FFUpdater has crashed

Hi,

in these days, my smartphone was without connection. I had the wire signal, but I was not able to navigate, so I experienced the following crash multiple times:

de.marmaro.krt.ffupdater.utils.ParamRuntimeException at BackgroundUpdateChecker.java:84 de.marmaro.krt.ffupdater.utils.ParamRuntimeException de.marmaro.krt.ffupdater.utils.ParamRuntimeException: background update check failed for FIREFOX_RELEASE at de.marmaro.krt.ffupdater.notification.BackgroundUpdateChecker.lambda$findAppsWithAvailableUpdates$1(BackgroundUpdateChecker.java:84) at de.marmaro.krt.ffupdater.notification.-$$Lambda$BackgroundUpdateChecker$35ZiPKEdROusULgHJI2328BkhpY.accept(Unknown Source:10) at j$.util.Map$-CC.$default$forEach(Map.java:5) at j$.util.Map$-EL.forEach(Map.java:6) at de.marmaro.krt.ffupdater.notification.BackgroundUpdateChecker.findAppsWithAvailableUpdates(BackgroundUpdateChecker.java:75) at de.marmaro.krt.ffupdater.notification.BackgroundUpdateChecker.doBackgroundCheck(BackgroundUpdateChecker.java:62) at de.marmaro.krt.ffupdater.notification.BackgroundUpdateChecker.doWork(BackgroundUpdateChecker.java:47) at androidx.work.Worker$1.run(Worker.java:85) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764) Caused by: java.util.concurrent.ExecutionException: de.marmaro.krt.ffupdater.utils.ParamRuntimeException: can't consume API interface https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/mobile.v2.fenix.release.latest.arm64-v8a/artifacts/public/chain-of-trust.json at java.util.concurrent.FutureTask.report(FutureTask.java:123) at java.util.concurrent.FutureTask.get(FutureTask.java:207) at de.marmaro.krt.ffupdater.notification.BackgroundUpdateChecker.lambda$findAppsWithAvailableUpdates$1(BackgroundUpdateChecker.java:77) ... 10 more Caused by: de.marmaro.krt.ffupdater.utils.ParamRuntimeException: can't consume API interface https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/mobile.v2.fenix.release.latest.arm64-v8a/artifacts/public/chain-of-trust.json at de.marmaro.krt.ffupdater.metadata.fetcher.ApiConsumer.consume(ApiConsumer.java:43) at de.marmaro.krt.ffupdater.metadata.fetcher.MozillaCiConsumer.consume(MozillaCiConsumer.java:22) at de.marmaro.krt.ffupdater.metadata.fetcher.Firefox.call(Firefox.java:47) at de.marmaro.krt.ffupdater.metadata.fetcher.Fetcher.fetchAvailableMetadata(Fetcher.java:74) at de.marmaro.krt.ffupdater.metadata.fetcher.Fetcher.call(Fetcher.java:56) at de.marmaro.krt.ffupdater.metadata.fetcher.Fetcher.call(Fetcher.java:15) at java.util.concurrent.FutureTask.run(FutureTask.java:266) ... 3 more Caused by: java.net.ConnectException: Failed to connect to firefox-ci-tc.services.mozilla.com/35.190.5.182:443 at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:143) at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaders(HttpURLConnectionImpl.java:163) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:207) at java.net.URLConnection.getContentEncoding(URLConnection.java:529) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getContentEncoding(DelegatingHttpsURLConnection.java:142) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getContentEncoding(HttpsURLConnectionImpl.java:26) at de.marmaro.krt.ffupdater.metadata.fetcher.ApiConsumer.consume(ApiConsumer.java:33) ... 9 more Android Version: 28 Device Manufacturer: asus Device Model: ASUS_X01BDA

Thank you for your work.

Background update crash

A device is with disabled mobile data but with Wi-Fi turned on. Approximately an hour after the device lose (Wi-Fi) connection because it is out of range an error of the sort appears:

Caused by: java.net.UnknownHostException: Unable to resolve host "firefox-ci-tc.services.mozilla.com": No address associated with hostname
Full stacktrace
de.marmaro.krt.ffupdater.utils.ParamRuntimeException: Failed to fetch the download url from Mozilla CI
	at de.marmaro.krt.ffupdater.InstallActivity.lambda$fetchAvailableMetadata$3$InstallActivity(InstallActivity.java:207)
	at de.marmaro.krt.ffupdater.-$$Lambda$InstallActivity$D3MDEMe3EyG_NptgNd2sctku1ks.run(Unknown Source:4)
	at java.lang.Thread.run(Thread.java:919)
Caused by: java.util.concurrent.ExecutionException: de.marmaro.krt.ffupdater.utils.ParamRuntimeException: can't consume API interface https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/mobile.v2.fenix.nightly.latest.arm64-v8a/artifacts/public/chain-of-trust.json
	at java.util.concurrent.FutureTask.report(FutureTask.java:123)
	at java.util.concurrent.FutureTask.get(FutureTask.java:207)
	at de.marmaro.krt.ffupdater.InstallActivity.lambda$fetchAvailableMetadata$3$InstallActivity(InstallActivity.java:200)
	... 2 more
Caused by: de.marmaro.krt.ffupdater.utils.ParamRuntimeException: can't consume API interface https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/mobile.v2.fenix.nightly.latest.arm64-v8a/artifacts/public/chain-of-trust.json
	at de.marmaro.krt.ffupdater.metadata.fetcher.ApiConsumer.consume(ApiConsumer.java:43)
	at de.marmaro.krt.ffupdater.metadata.fetcher.MozillaCiConsumer.consume(MozillaCiConsumer.java:22)
	at de.marmaro.krt.ffupdater.metadata.fetcher.Firefox.call(Firefox.java:47)
	at de.marmaro.krt.ffupdater.metadata.fetcher.Fetcher.fetchAvailableMetadata(Fetcher.java:80)
	at de.marmaro.krt.ffupdater.metadata.fetcher.Fetcher.call(Fetcher.java:56)
	at de.marmaro.krt.ffupdater.metadata.fetcher.Fetcher.call(Fetcher.java:15)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	... 1 more
Caused by: java.net.UnknownHostException: Unable to resolve host "firefox-ci-tc.services.mozilla.com": No address associated with hostname
	at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:156)
	at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
	at java.net.InetAddress.getAllByName(InetAddress.java:1152)
	at com.android.okhttp.Dns$1.lookup(Dns.java:41)
	at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:178)
	at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:144)
	at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:86)
	at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:176)
	at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
	at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
	at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
	at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaders(HttpURLConnectionImpl.java:167)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:211)
	at java.net.URLConnection.getContentEncoding(URLConnection.java:529)
	at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getContentEncoding(DelegatingHttpsURLConnection.java:143)
	at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getContentEncoding(HttpsURLConnectionImpl.java:30)
	at de.marmaro.krt.ffupdater.metadata.fetcher.ApiConsumer.consume(ApiConsumer.java:33)
	... 9 more
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
	at libcore.io.Linux.android_getaddrinfo(Native Method)
	at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:74)
	at libcore.io.BlockGuardOs.android_getaddrinfo(BlockGuardOs.java:200)
	at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:74)
	at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:135)
	... 28 more

It is reproducible. Are you interested in the exact steps? Probably related to #18

Crash

Hello,

The app crash when trying to find an update to Iceraven. Here is the log:

de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException at MainActivity.kt:199
de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException

de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException: fail to check ICERAVEN for updates
	at de.marmaro.krt.ffupdater.MainActivity$checkForAppUpdate$1.invokeSuspend(MainActivity.kt:199)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: de.marmaro.krt.ffupdater.app.impl.exceptions.ApiNetworkException: Fail to consume API. Previous exceptions: [https://api.github.com/repos/fork-maintainers/iceraven-browser/releases/latest; https://api.github.com/repos/fork-maintainers/iceraven-browser/releases/latest; https://api.github.com/repos/fork-maintainers/iceraven-browser/releases/latest; https://api.github.com/repos/fork-maintainers/iceraven-browser/releases/latest; https://api.github.com/repos/fork-maintainers/iceraven-browser/releases/latest]. Last exception:
	at de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer.readNetworkResourceWithRetries(ApiConsumer.kt:62)
	at de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer$readNetworkResourceWithRetries$1.invokeSuspend(Unknown Source:12)
	... 6 more
Caused by: java.io.FileNotFoundException: https://api.github.com/repos/fork-maintainers/iceraven-browser/releases/latest
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251)
	at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
	at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(Unknown Source:0)
	at de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer.readNetworkResource(ApiConsumer.kt:73)
	at de.marmaro.krt.ffupdater.app.impl.fetch.ApiConsumer.readNetworkResourceWithRetries(ApiConsumer.kt:55)
	... 7 more


Android Version: 27
Device Manufacturer: samsung
Device Model: SM-G930F

Support for Iceraven

Iceraven is an open-source Firefox for Android fork dedicated to providing users more options, customizations, extendability, and information about how their browser interacts with the websites they visit (and vice-versa) than upstream Firefox.

It also tries to strip out proprietary telemetry as much as possible. Some of the code for that is based on the F-Droid Fennec code.

Anyhow, they've been trying to get listed in F-Droid since at least August, and haven't quite been able to get it done (See fork-maintainers/iceraven-browser#26 ).

Right now, it releases exclusively through Github.

Is there any chance that the .apk files from https://github.com/fork-maintainers/iceraven-browser/releases could be added to your updater?

Iceraven is not a Mozilla release, but it is a close fork, and I note that you already have, or have in the past had, the ability to support multiple browsers (i.e. All the different Mozilla browsers that have been at times available simultaneously).

I'm not asking this as any kind of official representative, just as a fan of Iceraven. They're short on people who can do the real coding work, so I try to run around online doing stuff like this on my own initiative. ;)

I'm tagging Iceraven's lead developer- @interfect - as a courtesy, but just so that he is aware of this thread, not to pull his attention towards getting it done. Right now he's the only developer and has to balance that with a separate full time job and a life, so he may want to, you know, develop the browser with the limited amount of time he has (Incidentally, Iceraven welcomes volunteer coders either at the level of potential project maintainers or just to submit some patches and pull requests, which could be as simple as merging from upstream stable. Folks who don't mind doing CI testing would be particularly welcome.) rather than engaging in discussion on another project's GitHub, but I think this is something he'd approve of as at least a temporary solution if @Tobi823 is willing to do it.

If you're not comfortable listing it because of potential confusion with official Mozilla releases, you could always consider listing it in a way that makes it's status clear within the updater with something along the lines of "Iceraven (Not an official Mozilla release)".

android 11 can't install update

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.content.pm.action.CONFIRM_INSTALL (has extras) }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2081)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1737)
at android.app.Activity.startActivityForResult(Activity.java:5436)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:574)
at android.app.Activity.startActivityForResult(Activity.java:5394)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:560)
at android.app.Activity.startActivity(Activity.java:5780)
at android.app.Activity.startActivity(Activity.java:5733)
at de.marmaro.krt.ffupdater.installer.SessionInstaller.onNewIntentCallback(SessionInstaller.kt:23)
at de.marmaro.krt.ffupdater.InstallActivity.onNewIntent(InstallActivity.kt:149)
at android.app.Activity.performNewIntent(Activity.java:8163)
at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1410)
at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1423)
at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:3769)
at android.app.ActivityThread.handleNewIntent(ActivityThread.java:3781)
at android.app.servertransaction.NewIntentItem.execute(NewIntentItem.java:53)
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:2142)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:236)
at android.app.ActivityThread.main(ActivityThread.java:8067)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

Error when going in landscape mode while viewing browser options (+ button)

Doesn't actually crash the application. Seems to be caused by changing viewing mode while viewing the + browser menu. Returns following stack trace:

java.lang.RuntimeException: Unable to start activity ComponentInfo{de.marmaro.krt.ffupdater/de.marmaro.krt.ffupdater.MainActivity}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment de.marmaro.krt.ffupdater.dialog.InstallAppDialog: could not find Fragment constructor
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3477)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3620)
	at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5514)
	at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5422)
	at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
	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:2183)
	at android.os.Handler.dispatchMessage(Handler.java:107)
	at android.os.Looper.loop(Looper.java:241)
	at android.app.ActivityThread.main(ActivityThread.java:7604)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment de.marmaro.krt.ffupdater.dialog.InstallAppDialog: could not find Fragment constructor
	at androidx.fragment.app.Fragment.instantiate(Fragment.java:625)
	at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57)
	at androidx.fragment.app.FragmentManager$3.instantiate(FragmentManager.java:483)
	at androidx.fragment.app.FragmentStateManager.<init>(FragmentStateManager.java:85)
	at androidx.fragment.app.FragmentManager.restoreSaveState(FragmentManager.java:2714)
	at androidx.fragment.app.FragmentController.restoreSaveState(FragmentController.java:198)
	at androidx.fragment.app.FragmentActivity$2.onContextAvailable(FragmentActivity.java:149)
	at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.java:99)
	at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:307)
	at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:269)
	at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:115)
	at de.marmaro.krt.ffupdater.MainActivity.onCreate(MainActivity.kt:42)
	at android.app.Activity.performCreate(Activity.java:7822)
	at android.app.Activity.performCreate(Activity.java:7811)
	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1328)
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3452)
	... 13 more
Caused by: java.lang.NoSuchMethodException: de.marmaro.krt.ffupdater.dialog.InstallAppDialog.<init> []
	at java.lang.Class.getConstructor0(Class.java:2332)
	at java.lang.Class.getConstructor(Class.java:1728)
	at androidx.fragment.app.Fragment.instantiate(Fragment.java:610)
	... 28 more

Kiwi Browser intercepts search queries through their own servers

[Update: see below, Kiwi Browser may or may not be spyware.]

I read the most recent FFUpdater changelog and saw that it included Kiwi Browser. Kiwi Browser looks good... It's Chrome-based (faster and less unstable than Firefox), it supports extensions... nope it's spyware.

Search engine spyware/keylogging

Summary: Kiwi Browser ships with fake search engines that masquerade as Yahoo or Bing. They actually send all searches through their own servers, allowing Kiwi's owners to track what each user is searching for.

Not only that, but they also see autocomplete queries, which tell them which URLs they type into the address bar, and what things you type but don't press Enter on. Currently, the Bing and Yahoo search engines use the upstream suggest URLs rather than sending suggestions through the redirector, but I don't know what the the default search engine (randomly named Bing or Yahoo) does.


If you install Kiwi Browser, open the app, and wait a few seconds before performing a search, it might go to Bing or Yahoo (randomly chosen). It's a lie.

If you turn on Airplane Mode and perform a different web search, the URL shows kiwisearchservices.com or kiwisearchservices.net, which is disturbing. Kiwi Browser tries to cover its tracks; if you open settings and look at the list of search engines, Kiwi Browser lies to you and claims the default is Bing or Yahoo. It's not, it's a search redirector/keylogger they operate for revenue.

Every time I clear data, the default search engine is randomly chosen out of fake-Bing or fake-Yahoo. The next 2 search engines in the settings are always a second fake Yahoo and a second fake Bing. All Yahoo search engines actually redirect searches through kiwisearchservices.net, and all Bing choices redirects through kiwisearchservices.com.

  • Looking at Kiwi's source code, their Bing and Yahoo search entries all point to search.kiwibrowser.org, but this URL is hidden from the user, who cannot add or modify search engines.
  • I wonder if this is a trademark violation, and Yahoo/Microsoft can sue.

Sidenote: More odd behavior

Turn on Airplane Mode, clear app data, go into the settings. The search engine is "Default Search", with description "send to the best search engine for the request". Weird.

Breaking adblockers on search result pages

Kiwi Browser advertises itself as one of the few Android browsers supporting extensions, like ad-blockers. But it wants to maximize its revenue stream, which adblockers would harm. So the browser deactivates ad-blocking extensions on search engines (including their own search redirectors). This subterfuge is clearly visible in Kiwi's source code.

In-browser advertising

As a bonus, the latest commit message in that file is:

Add ideas of websites to visit (explore), the goal is to make users spend more time within the browser and visit partners

In other words, shilling their "partners" in the browser.

Conclusion

I do not trust Kiwi Browser with my browsing history and website logins. And neither should the users of FFUpdater. Or anyone on the Play Store, for that matter. I await the day it gets taken down from the store.


I don't know what else the browser does. It's a rather outdated Chrome fork with occasional backported patches and "thousands of files changed" (according to their README). For all I know, they may be stealing cookies and passwords and bank/credit card credentials to resell.

I've archived Kiwi Browser's source code and history (as of today) at https://github.com/nyanpasu64/kiwibrowser, in case they decide to erase the evidence.

Crash during update of Lite

Hej there!
I'm running Firefox lite (and Klar and Browser).
But I can't update lite from 2.5.2 to 2.6.0 (the others worked).
It looks like the download is successful, but when it tries to update the package it crashes with this error message.
I tried it many times already, always the same result.

java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at de.marmaro.krt.ffupdater.security.FingerprintValidator.verifyPackageInfo(FingerprintValidator.java:72)
at de.marmaro.krt.ffupdater.security.FingerprintValidator.checkApkFile(FingerprintValidator.java:47)
at de.marmaro.krt.ffupdater.InstallActivity$1.lambda$onReceive$0$InstallActivity$1(InstallActivity.java:262)
at de.marmaro.krt.ffupdater.-$$Lambda$InstallActivity$1$LqHCXswk3aZ1y_DLFUVKPrapTCs.run(Unknown Source:4)
at java.lang.Thread.run(Thread.java:919)

App crash and unable to update Firefox Beta

de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException: fail to check FIREFOX_BETA for updates
at de.marmaro.krt.ffupdater.MainActivity$checkForAppUpdate$1.invokeSuspend(MainActivity.kt:204)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.NullPointerException
at de.marmaro.krt.ffupdater.app.impl.fetch.mozillaci.MozillaCiLogConsumer.updateCheck(MozillaCiLogConsumer.kt:28)
at de.marmaro.krt.ffupdater.app.impl.FirefoxBeta.updateCheckWithoutCaching(FirefoxBeta.kt:39)
at de.marmaro.krt.ffupdater.app.BaseAppDetail$updateCheck$$inlined$withLock$lambda$1.invokeSuspend(BaseAppDetail.kt:63)
... 6 more

de.marmaro.krt.ffupdater.MainActivity$UpdateCheckException at MainActivity.krt: 204

This crash came up on my automatic check for updates and continues if I try to manually check for updates:

java.lang.NullPointerException
	at de.marmaro.krt.ffupdater.app.impl.fetch.mozillaci.MozillaCiLogConsumer.updateCheck(MozillaCiLogConsumer.kt:28)
	at de.marmaro.krt.ffupdater.app.impl.FirefoxRelease.updateCheckWithoutCaching(FirefoxRelease.kt:39)
	at de.marmaro.krt.ffupdater.app.BaseAppDetail$updateCheck$$inlined$withLock$lambda$1.invokeSuspend(BaseAppDetail.kt:63)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

New localization

Apart from new, translated values-xx\strings.xml what other is needed for new localization to be accepted?

"No Network Connection" but updates anyway

@Tobi823 As shown below, many versions from v74.3.0 & before say "No Network Connection" on my Android 8.1.0 32-bit Moto G5+, but updates actually download & install when available. On my Android 11 64-bit TCL 10L, everything shows & works as expected. Fix available?

Screenshot_20210708-072430.png

Nightly URL is broken

The download link for Nightly is different than the path in Mozilla archive.

It seems like they've changed it to :
https://archive.mozilla.org/pub/mobile/nightly/latest-mozilla-esr68-android-api-16/

I guess the name will change again when ESR 68 will hit its End of Life.

Cannot find downloaded apk. It disappeared.

FFUpdater

Using FFUpdater 72.0.0 on Android 7.1 (LineageOS 14.1, no Google)

Clicked on red arrow to download Firefox. Firefox downloaded successfully (data usage app showed ~67MB downloaded)
After download completed, nothing happened, so opened file explorer and searched for downloaded apk. Searched entire file system, including SD card, but could not find Firefox apk. (FFUpdater 'download' folder empty)

Downloaded apk apparently not saved (or deleted after download).
(An unfortunate waste of metered data).

Would be good to have an in-app setting for user to choose download location (including ability to select external SD card). Either that or an in-app button to "Open download folder".

This is my first time downloading an update in FFUpdater. I hope it is not intentionally deleting downloaded apk, especially when it apparently makes no attempt to install update after downloading!

java.lang.NullPointerException

How to reproduce:

I got a notification saying background update had failed. When I opened the notification the app had crashed.

Stacktrace:

java.lang.NullPointerException at MozillaCiLogConsumer.kt:28

java.lang.NullPointerException

java.lang.NullPointerException
at de.marmaro.krt.ffupdater.app.impl.fetch.mozillaci.MozillaCiLogConsumer.updateCheck(MozillaCiLogConsumer.kt:28)
at de.marmaro.krt.ffupdater.app.impl.FirefoxRelease.updateCheckWithoutCaching(FirefoxRelease.kt:39)
at de.marmaro.krt.ffupdater.app.BaseAppDetail$updateCheck$$inlined$withLock$lambda$1.invokeSuspend(BaseAppDetail.kt:63)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Android Version: 30
Device Manufacturer: motorola
Device Model: moto g(8) power

Firefox Nightly update failed

Hi Tobi,

I am trying to update to the latest nightly, but I am getting an error regarding mismatched certificates.
Are you aware of any changes from Firefox?
IMG_20200804_153625

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.