Skip to content

Commit 8600360

Browse files
fixes #2
- Switched back to java 17 Tracking-Bug: A-4762 (F-Droid builds failing) So far, we don't depend on any JVM 19 features. This may change in the future and a different solution may be req'd - Properly fixed race condition Previously, we tried to unreliably check class name which doesn't work for minified builds - Migrate a couple things to kotlin - Refactor http class - fix chinese traditional Signed-off-by: androidacy-user <opensource@androidacy.com>
1 parent 0c1a3ce commit 8600360

9 files changed

Lines changed: 53 additions & 44 deletions

File tree

.github/workflows/build-debug.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ jobs:
2828
with:
2929
submodules: true
3030

31-
- name: Set up Java 19
31+
- name: Set up Java 17
3232
uses: actions/setup-java@v3
3333
with:
34-
java-version: 19
34+
java-version: 17
3535
distribution: 'temurin'
3636

3737
- name: Setup Android SDK

app/build.gradle.kts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ android {
287287

288288
compileOptions {
289289
isCoreLibraryDesugaringEnabled = true
290-
sourceCompatibility = JavaVersion.VERSION_19
291-
targetCompatibility = JavaVersion.VERSION_19
290+
sourceCompatibility = JavaVersion.VERSION_17
291+
targetCompatibility = JavaVersion.VERSION_17
292292
}
293293

294294
lint {
@@ -393,12 +393,12 @@ dependencies {
393393
implementation("androidx.recyclerview:recyclerview:1.3.0")
394394
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
395395
implementation("androidx.webkit:webkit:1.6.1")
396-
implementation("com.google.android.material:material:1.8.0")
396+
implementation("com.google.android.material:material:1.9.0")
397397
implementation("dev.rikka.rikkax.layoutinflater:layoutinflater:1.3.0")
398398
implementation("dev.rikka.rikkax.insets:insets:1.3.0")
399399
implementation("com.github.KieronQuinn:MonetCompat:0.4.1")
400400
implementation("com.github.Fox2Code:FoxCompat:0.2.0")
401-
implementation("com.mikepenz:aboutlibraries:10.6.2")
401+
implementation("com.mikepenz:aboutlibraries:10.6.3")
402402

403403
// Utils
404404
implementation("androidx.work:work-runtime:2.8.1")
@@ -427,7 +427,7 @@ dependencies {
427427
implementation("com.github.topjohnwu.libsu:io:${libsuVersion}")
428428

429429
implementation("com.github.Fox2Code:RosettaX:1.0.9")
430-
implementation("com.github.Fox2Code:AndroidANSI:1.0.1")
430+
implementation("com.github.Fox2Code:AndroidANSI:1.2.1")
431431

432432
// sentry
433433
implementation("io.sentry:sentry-android:6.18.1")
@@ -492,6 +492,6 @@ android {
492492

493493
java {
494494
toolchain {
495-
languageVersion.set(JavaLanguageVersion.of(19))
495+
languageVersion.set(JavaLanguageVersion.of(17))
496496
}
497497
}

app/src/main/java/com/fox2code/mmm/MainApplication.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.fox2code.foxcompat.view.FoxThemeWrapper;
3333
import com.fox2code.mmm.installer.InstallerInitializer;
3434
import com.fox2code.mmm.utils.TimberUtils;
35+
import com.fox2code.mmm.utils.io.FileUtils;
3536
import com.fox2code.mmm.utils.io.GMSProviderInstaller;
3637
import com.fox2code.mmm.utils.io.net.Http;
3738
import com.fox2code.mmm.utils.sentry.SentryMain;
@@ -392,17 +393,12 @@ public void onCreate() {
392393
Timber.i("Starting FoxMMM version %s (%d) - commit %s", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE, BuildConfig.COMMIT_HASH);
393394
// Update SSL Ciphers if update is possible
394395
GMSProviderInstaller.installIfNeeded(this);
395-
// detect if we're launching the crashhandler
396-
// get intent that started the crashhandler
397-
Intent intent = getIntent();
398-
if (intent != null) {
399-
if (intent.getClass().getName().equals("com.fox2code.mmm.CrashHandler")) {
400-
isCrashHandler = true;
401-
}
402-
}
396+
// get intent. if isCrashing is not present or false, call FileUtils.ensureCacheDirs and FileUtils.ensureURLHandler
397+
isCrashHandler = getIntent().getBooleanExtra("isCrashing", false);
403398
if (!isCrashHandler) {
404-
Http.ensureCacheDirs();
405-
Http.ensureURLHandler(getApplicationContext());
399+
FileUtils fileUtils = new FileUtils();
400+
fileUtils.ensureCacheDirs();
401+
fileUtils.ensureURLHandler(this);
406402
}
407403
Timber.d("Initializing FoxMMM");
408404
Timber.d("Started from background: %s", !isInForeground());

app/src/main/java/com/fox2code/mmm/installer/InstallerActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ public void onAddElement(String s) {
590590
this.useExt = true;
591591
return;
592592
}
593-
s = AnsiParser.patchEscapeSequence(s);
593+
s = AnsiParser.patchEscapeSequences(s);
594594
if (this.useExt && s.startsWith("#!")) {
595595
this.processCommand(s.substring(2));
596596
} else if (this.useRecovery && s.startsWith("progress ")) {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.fox2code.mmm.utils.io
2+
3+
import android.content.Context
4+
import com.fox2code.mmm.MainApplication
5+
import org.apache.commons.io.FileUtils
6+
import org.chromium.net.CronetEngine
7+
import timber.log.Timber
8+
import java.io.File
9+
import java.io.IOException
10+
import java.net.URL
11+
12+
class FileUtils {
13+
private var urlFactoryInstalled = false
14+
15+
fun ensureCacheDirs() {
16+
try {
17+
FileUtils.forceMkdir(File((MainApplication.getINSTANCE().dataDir.toString() + "/cache/WebView/Default/HTTP Cache/Code Cache/wasm").replace("//".toRegex(), "/")))
18+
FileUtils.forceMkdir(File((MainApplication.getINSTANCE().dataDir.toString() + "/cache/WebView/Default/HTTP Cache/Code Cache/js").replace("//".toRegex(), "/")))
19+
FileUtils.forceMkdir(File((MainApplication.getINSTANCE().dataDir.toString() + "/cache/cronet").replace("//".toRegex(), "/")))
20+
} catch (e: IOException) {
21+
Timber.e("Could not create cache dirs")
22+
}
23+
}
24+
25+
fun ensureURLHandler(context: Context?) {
26+
if (!urlFactoryInstalled) {
27+
try {
28+
URL.setURLStreamHandlerFactory(CronetEngine.Builder(context).build().createURLStreamHandlerFactory())
29+
urlFactoryInstalled = true
30+
} catch (ignored: Error) {
31+
// Ignore
32+
}
33+
}
34+
}
35+
}

app/src/main/java/com/fox2code/mmm/utils/io/net/Http.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import com.google.android.material.snackbar.Snackbar;
3030
import com.google.net.cronet.okhttptransport.CronetInterceptor;
3131

32-
import org.apache.commons.io.FileUtils;
3332
import org.chromium.net.CronetEngine;
3433

3534
import java.io.ByteArrayOutputStream;
@@ -38,7 +37,6 @@
3837
import java.io.InputStream;
3938
import java.net.InetAddress;
4039
import java.net.Proxy;
41-
import java.net.URL;
4240
import java.net.UnknownHostException;
4341
import java.nio.charset.StandardCharsets;
4442
import java.util.ArrayList;
@@ -78,7 +76,6 @@ public enum Http {
7876
private static final boolean hasWebView;
7977
private static String needCaptchaAndroidacyHost;
8078
private static boolean doh;
81-
private static boolean urlFactoryInstalled;
8279

8380
static {
8481
MainApplication mainApplication = MainApplication.getINSTANCE();
@@ -396,27 +393,6 @@ public static boolean hasWebView() {
396393
return hasWebView;
397394
}
398395

399-
public static void ensureCacheDirs() {
400-
try {
401-
FileUtils.forceMkdir(new File((MainApplication.getINSTANCE().getDataDir() + "/cache/WebView/Default/HTTP Cache/Code Cache/wasm").replaceAll("//", "/")));
402-
FileUtils.forceMkdir(new File((MainApplication.getINSTANCE().getDataDir() + "/cache/WebView/Default/HTTP Cache/Code Cache/js").replaceAll("//", "/")));
403-
FileUtils.forceMkdir(new File((MainApplication.getINSTANCE().getDataDir() + "/cache/cronet").replaceAll("//", "/")));
404-
} catch (IOException e) {
405-
Timber.e("Could not create cache dirs");
406-
}
407-
}
408-
409-
public static void ensureURLHandler(Context context) {
410-
if (!urlFactoryInstalled) {
411-
try {
412-
URL.setURLStreamHandlerFactory(new CronetEngine.Builder(context).build().createURLStreamHandlerFactory());
413-
urlFactoryInstalled = true;
414-
} catch (Error ignored) {
415-
// Ignore
416-
}
417-
}
418-
}
419-
420396
public static boolean hasConnectivity() {
421397
// Check if we have internet connection
422398
Timber.d("Checking internet connection...");

app/src/main/java/com/fox2code/mmm/utils/sentry/SentryMain.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public static void initialize(final MainApplication mainApplication) {
5353
intent.putExtra("sentryException", throwable);
5454
// pass crashReportingEnabled to crash handler
5555
intent.putExtra("crashReportingEnabled", isSentryEnabled());
56+
// add isCrashing to intent
57+
intent.putExtra("isCrashing", isCrashing);
5658
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
5759
Timber.e("Starting crash handler");
5860
mainApplication.startActivity(intent);
File renamed without changes.

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ buildscript {
1414
set("sentryVersion", "6.18.1")
1515
}
1616
dependencies {
17-
classpath("com.android.tools.build:gradle:8.0.0")
17+
classpath("com.android.tools.build:gradle:8.0.1")
1818
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.21")
1919
classpath("com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:10.6.2")
2020

0 commit comments

Comments
 (0)