From c010d7bf0c204790ad1c146899f02888f0fdc6ff Mon Sep 17 00:00:00 2001 From: Fox2Code Date: Sun, 24 Oct 2021 16:35:29 +0200 Subject: [PATCH] Release 0.1.1 - Improve the reading of invalid `module.prop` files (Should fix Substratum not appearing in the module list) - Add fallback support link for substratum - Update Libraries --- app/build.gradle | 4 ++-- .../fox2code/mmm/manager/ModuleManager.java | 5 +++++ .../com/fox2code/mmm/utils/PropUtils.java | 19 ++++++++++++++++--- build.gradle | 2 +- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index dd81863..1ef3344 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.fox2code.mmm" minSdk 21 targetSdk 30 - versionCode 4 - versionName "0.1.0" + versionCode 5 + versionName "0.1.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/fox2code/mmm/manager/ModuleManager.java b/app/src/main/java/com/fox2code/mmm/manager/ModuleManager.java index 41db0fc..dcfb033 100644 --- a/app/src/main/java/com/fox2code/mmm/manager/ModuleManager.java +++ b/app/src/main/java/com/fox2code/mmm/manager/ModuleManager.java @@ -1,6 +1,7 @@ package com.fox2code.mmm.manager; import android.content.SharedPreferences; +import android.util.Log; import com.fox2code.mmm.MainApplication; import com.fox2code.mmm.utils.PropUtils; @@ -11,6 +12,8 @@ import java.util.HashMap; import java.util.Iterator; public final class ModuleManager { + private static final String TAG = "ModuleManager"; + private static final int FLAG_MM_INVALID = ModuleInfo.FLAG_METADATA_INVALID; private static final int FLAG_MM_UNPROCESSED = 0x40000000; private static final int FLAGS_RESET_INIT = FLAG_MM_INVALID | @@ -117,6 +120,7 @@ public final class ModuleManager { PropUtils.readProperties(moduleInfo, "/data/adb/modules/" + module + "/module.prop"); } catch (Exception e) { + Log.d(TAG, "Failed to parse metadata!", e); moduleInfo.flags |= FLAG_MM_INVALID; } } @@ -136,6 +140,7 @@ public final class ModuleManager { PropUtils.readProperties(moduleInfo, "/data/adb/modules_update/" + module + "/module.prop"); } catch (Exception e) { + Log.d(TAG, "Failed to parse metadata!", e); moduleInfo.flags |= FLAG_MM_INVALID; } } diff --git a/app/src/main/java/com/fox2code/mmm/utils/PropUtils.java b/app/src/main/java/com/fox2code/mmm/utils/PropUtils.java index d801911..754c73b 100644 --- a/app/src/main/java/com/fox2code/mmm/utils/PropUtils.java +++ b/app/src/main/java/com/fox2code/mmm/utils/PropUtils.java @@ -10,6 +10,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.HashMap; +import java.util.Locale; public class PropUtils { private static final HashMap moduleSupportsFallbacks = new HashMap<>(); @@ -24,7 +25,8 @@ public class PropUtils { moduleSupportsFallbacks.put("aospill", "https://t.me/PannekoX"); moduleSupportsFallbacks.put("quickstepswitcher", "https://t.me/QuickstepSwitcherSupport"); moduleSupportsFallbacks.put("riru_edxposed", "https://t.me/EdXposed"); - moduleSupportsFallbacks.put("riru_lsposed", "https://github.com/LSPosed/LSPosed/issues/"); + moduleSupportsFallbacks.put("riru_lsposed", "https://github.com/LSPosed/LSPosed/issues"); + moduleSupportsFallbacks.put("substratum", "https://github.com/substratum/substratum/issues"); // Config are application installed by modules that allow them to be configured moduleConfigsFallbacks.put("quickstepswitcher", "xyz.paphonb.quickstepswitcher"); moduleConfigsFallbacks.put("riru_edxposed", "org.meowcat.edxposed.manager"); @@ -44,7 +46,7 @@ public class PropUtils { } public static void readProperties(ModuleInfo moduleInfo, String file) throws IOException { - boolean readId = false, readVersionCode = false; + boolean readId = false, readIdSec = false, readVersionCode = false; try (BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(SuFileInputStream.open(file), StandardCharsets.UTF_8))) { String line; @@ -63,7 +65,12 @@ public class PropUtils { } break; case "name": + if (readIdSec && !moduleInfo.id.equals(value)) + throw new IOException("Duplicate module name!"); moduleInfo.name = value; + if (moduleInfo.id.equals(value)) { + readIdSec = true; + } break; case "version": moduleInfo.version = value; @@ -124,7 +131,13 @@ public class PropUtils { } } if (!readId) { - throw new IOException("Didn't read module id at least once!"); + if (readIdSec) { + // Using the name for module id is not really appropriate, so beautify it a bit + moduleInfo.name = moduleInfo.id.substring(0, 1).toUpperCase(Locale.ROOT) + + moduleInfo.id.substring(1).replace('_', ' '); + } else { + throw new IOException("Didn't read module id at least once!"); + } } if (!readVersionCode) { throw new IOException("Didn't read module versionCode at least once!"); diff --git a/build.gradle b/build.gradle index d73ee10..cc7c953 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { mavenCentral() gradlePluginPortal() } - project.ext.latestAboutLibsRelease = "8.9.3" + project.ext.latestAboutLibsRelease = "8.9.4" dependencies { classpath "com.android.tools.build:gradle:7.0.3" classpath "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:${latestAboutLibsRelease}"