diff --git a/core/.gitignore b/app-core/.gitignore
similarity index 100%
rename from core/.gitignore
rename to app-core/.gitignore
diff --git a/core/build.gradle b/app-core/build.gradle
similarity index 94%
rename from core/build.gradle
rename to app-core/build.gradle
index e640219b4..c47fbebed 100644
--- a/core/build.gradle
+++ b/app-core/build.gradle
@@ -12,7 +12,7 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
api project(':net')
- api project(':utils')
+ api project(':signing')
api 'org.kamranzafar:jtar:2.3'
def libsuVersion = '2.2.0'
diff --git a/core/proguard-rules.pro b/app-core/proguard-rules.pro
similarity index 100%
rename from core/proguard-rules.pro
rename to app-core/proguard-rules.pro
diff --git a/core/src/main/AndroidManifest.xml b/app-core/src/main/AndroidManifest.xml
similarity index 61%
rename from core/src/main/AndroidManifest.xml
rename to app-core/src/main/AndroidManifest.xml
index 54ffe8311..2b52b29bb 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/app-core/src/main/AndroidManifest.xml
@@ -1,2 +1,2 @@
+ package="com.topjohnwu.magisk.core" />
diff --git a/core/src/main/java/com/topjohnwu/core/App.java b/app-core/src/main/java/com/topjohnwu/magisk/App.java
similarity index 86%
rename from core/src/main/java/com/topjohnwu/core/App.java
rename to app-core/src/main/java/com/topjohnwu/magisk/App.java
index 20691d6d2..beffb98ef 100644
--- a/core/src/main/java/com/topjohnwu/core/App.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/App.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.core;
+package com.topjohnwu.magisk;
import android.content.Context;
import android.content.SharedPreferences;
@@ -8,10 +8,11 @@ import android.os.Handler;
import android.os.Looper;
import android.preference.PreferenceManager;
-import com.topjohnwu.core.database.MagiskDB;
-import com.topjohnwu.core.database.RepoDatabaseHelper;
-import com.topjohnwu.core.utils.LocaleManager;
-import com.topjohnwu.core.utils.RootUtils;
+import com.topjohnwu.magisk.core.BuildConfig;
+import com.topjohnwu.magisk.database.MagiskDB;
+import com.topjohnwu.magisk.database.RepoDatabaseHelper;
+import com.topjohnwu.magisk.utils.LocaleManager;
+import com.topjohnwu.magisk.utils.RootUtils;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.ContainerApp;
import com.topjohnwu.superuser.Shell;
diff --git a/core/src/main/java/com/topjohnwu/core/Config.java b/app-core/src/main/java/com/topjohnwu/magisk/Config.java
similarity index 99%
rename from core/src/main/java/com/topjohnwu/core/Config.java
rename to app-core/src/main/java/com/topjohnwu/magisk/Config.java
index 54b058433..dfc4d84de 100644
--- a/core/src/main/java/com/topjohnwu/core/Config.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/Config.java
@@ -1,10 +1,10 @@
-package com.topjohnwu.core;
+package com.topjohnwu.magisk;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Xml;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
import com.topjohnwu.superuser.io.SuFile;
diff --git a/core/src/main/java/com/topjohnwu/core/Const.java b/app-core/src/main/java/com/topjohnwu/magisk/Const.java
similarity index 99%
rename from core/src/main/java/com/topjohnwu/core/Const.java
rename to app-core/src/main/java/com/topjohnwu/magisk/Const.java
index e47ec8c00..71f2ab34b 100644
--- a/core/src/main/java/com/topjohnwu/core/Const.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/Const.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.core;
+package com.topjohnwu.magisk;
import android.os.Environment;
import android.os.Process;
diff --git a/core/src/main/java/com/topjohnwu/core/container/BaseModule.java b/app-core/src/main/java/com/topjohnwu/magisk/container/BaseModule.java
similarity index 99%
rename from core/src/main/java/com/topjohnwu/core/container/BaseModule.java
rename to app-core/src/main/java/com/topjohnwu/magisk/container/BaseModule.java
index 00ea53fb3..58cbf4e91 100644
--- a/core/src/main/java/com/topjohnwu/core/container/BaseModule.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/container/BaseModule.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.core.container;
+package com.topjohnwu.magisk.container;
import android.content.ContentValues;
import android.database.Cursor;
diff --git a/core/src/main/java/com/topjohnwu/core/container/Module.java b/app-core/src/main/java/com/topjohnwu/magisk/container/Module.java
similarity index 97%
rename from core/src/main/java/com/topjohnwu/core/container/Module.java
rename to app-core/src/main/java/com/topjohnwu/magisk/container/Module.java
index 406f26b72..3c2cd032e 100644
--- a/core/src/main/java/com/topjohnwu/core/container/Module.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/container/Module.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.core.container;
+package com.topjohnwu.magisk.container;
import android.os.Parcel;
import android.os.Parcelable;
diff --git a/core/src/main/java/com/topjohnwu/core/container/Policy.java b/app-core/src/main/java/com/topjohnwu/magisk/container/Policy.java
similarity index 96%
rename from core/src/main/java/com/topjohnwu/core/container/Policy.java
rename to app-core/src/main/java/com/topjohnwu/magisk/container/Policy.java
index 76fc32f2d..3897ab5dc 100644
--- a/core/src/main/java/com/topjohnwu/core/container/Policy.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/container/Policy.java
@@ -1,10 +1,10 @@
-package com.topjohnwu.core.container;
+package com.topjohnwu.magisk.container;
import android.content.ContentValues;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.utils.Utils;
import androidx.annotation.NonNull;
diff --git a/core/src/main/java/com/topjohnwu/core/container/Repo.java b/app-core/src/main/java/com/topjohnwu/magisk/container/Repo.java
similarity index 94%
rename from core/src/main/java/com/topjohnwu/core/container/Repo.java
rename to app-core/src/main/java/com/topjohnwu/magisk/container/Repo.java
index 3ac31bdab..7beed3db0 100644
--- a/core/src/main/java/com/topjohnwu/core/container/Repo.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/container/Repo.java
@@ -1,13 +1,13 @@
-package com.topjohnwu.core.container;
+package com.topjohnwu.magisk.container;
import android.content.ContentValues;
import android.database.Cursor;
import android.os.Parcel;
import android.os.Parcelable;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Logger;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.utils.Logger;
+import com.topjohnwu.magisk.utils.Utils;
import java.text.DateFormat;
import java.util.Date;
diff --git a/core/src/main/java/com/topjohnwu/core/container/SuLogEntry.java b/app-core/src/main/java/com/topjohnwu/magisk/container/SuLogEntry.java
similarity index 95%
rename from core/src/main/java/com/topjohnwu/core/container/SuLogEntry.java
rename to app-core/src/main/java/com/topjohnwu/magisk/container/SuLogEntry.java
index 04cfc56e9..2638105f4 100644
--- a/core/src/main/java/com/topjohnwu/core/container/SuLogEntry.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/container/SuLogEntry.java
@@ -1,8 +1,8 @@
-package com.topjohnwu.core.container;
+package com.topjohnwu.magisk.container;
import android.content.ContentValues;
-import com.topjohnwu.core.utils.LocaleManager;
+import com.topjohnwu.magisk.utils.LocaleManager;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
diff --git a/core/src/main/java/com/topjohnwu/core/container/TarEntry.java b/app-core/src/main/java/com/topjohnwu/magisk/container/TarEntry.java
similarity index 98%
rename from core/src/main/java/com/topjohnwu/core/container/TarEntry.java
rename to app-core/src/main/java/com/topjohnwu/magisk/container/TarEntry.java
index 4813444f3..2a09ddd39 100644
--- a/core/src/main/java/com/topjohnwu/core/container/TarEntry.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/container/TarEntry.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.core.container;
+package com.topjohnwu.magisk.container;
import org.kamranzafar.jtar.TarHeader;
diff --git a/core/src/main/java/com/topjohnwu/core/container/ValueSortedMap.java b/app-core/src/main/java/com/topjohnwu/magisk/container/ValueSortedMap.java
similarity index 95%
rename from core/src/main/java/com/topjohnwu/core/container/ValueSortedMap.java
rename to app-core/src/main/java/com/topjohnwu/magisk/container/ValueSortedMap.java
index cca2717d0..23be3c4d0 100644
--- a/core/src/main/java/com/topjohnwu/core/container/ValueSortedMap.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/container/ValueSortedMap.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.core.container;
+package com.topjohnwu.magisk.container;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/core/src/main/java/com/topjohnwu/core/database/MagiskDB.java b/app-core/src/main/java/com/topjohnwu/magisk/database/MagiskDB.java
similarity index 95%
rename from core/src/main/java/com/topjohnwu/core/database/MagiskDB.java
rename to app-core/src/main/java/com/topjohnwu/magisk/database/MagiskDB.java
index 24f127719..57925c1fb 100644
--- a/core/src/main/java/com/topjohnwu/core/database/MagiskDB.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/database/MagiskDB.java
@@ -1,16 +1,16 @@
-package com.topjohnwu.core.database;
+package com.topjohnwu.magisk.database;
import android.content.ContentValues;
import android.content.Context;
import android.content.pm.PackageManager;
import android.text.TextUtils;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.container.Policy;
-import com.topjohnwu.core.container.SuLogEntry;
-import com.topjohnwu.core.utils.LocaleManager;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.container.Policy;
+import com.topjohnwu.magisk.container.SuLogEntry;
+import com.topjohnwu.magisk.utils.LocaleManager;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import java.text.DateFormat;
diff --git a/core/src/main/java/com/topjohnwu/core/database/RepoDatabaseHelper.java b/app-core/src/main/java/com/topjohnwu/magisk/database/RepoDatabaseHelper.java
similarity index 95%
rename from core/src/main/java/com/topjohnwu/core/database/RepoDatabaseHelper.java
rename to app-core/src/main/java/com/topjohnwu/magisk/database/RepoDatabaseHelper.java
index 673ad77da..94ec43056 100644
--- a/core/src/main/java/com/topjohnwu/core/database/RepoDatabaseHelper.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/database/RepoDatabaseHelper.java
@@ -1,14 +1,14 @@
-package com.topjohnwu.core.database;
+package com.topjohnwu.magisk.database;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.container.Repo;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.container.Repo;
import java.util.HashSet;
import java.util.Set;
diff --git a/core/src/main/java/com/topjohnwu/core/tasks/CheckUpdates.java b/app-core/src/main/java/com/topjohnwu/magisk/tasks/CheckUpdates.java
similarity index 95%
rename from core/src/main/java/com/topjohnwu/core/tasks/CheckUpdates.java
rename to app-core/src/main/java/com/topjohnwu/magisk/tasks/CheckUpdates.java
index f6fcd08a9..065de3574 100644
--- a/core/src/main/java/com/topjohnwu/core/tasks/CheckUpdates.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/tasks/CheckUpdates.java
@@ -1,8 +1,8 @@
-package com.topjohnwu.core.tasks;
+package com.topjohnwu.magisk.tasks;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.utils.Topic;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.utils.Topic;
import com.topjohnwu.net.Networking;
import com.topjohnwu.net.Request;
import com.topjohnwu.net.ResponseListener;
diff --git a/core/src/main/java/com/topjohnwu/core/tasks/FlashZip.java b/app-core/src/main/java/com/topjohnwu/magisk/tasks/FlashZip.java
similarity index 93%
rename from core/src/main/java/com/topjohnwu/core/tasks/FlashZip.java
rename to app-core/src/main/java/com/topjohnwu/magisk/tasks/FlashZip.java
index 015ad9fe1..d81a746ae 100644
--- a/core/src/main/java/com/topjohnwu/core/tasks/FlashZip.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/tasks/FlashZip.java
@@ -1,12 +1,12 @@
-package com.topjohnwu.core.tasks;
+package com.topjohnwu.magisk.tasks;
import android.net.Uri;
import android.os.AsyncTask;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Utils;
-import com.topjohnwu.core.utils.ZipUtils;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.utils.Utils;
+import com.topjohnwu.magisk.utils.ZipUtils;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
diff --git a/core/src/main/java/com/topjohnwu/core/tasks/MagiskInstaller.java b/app-core/src/main/java/com/topjohnwu/magisk/tasks/MagiskInstaller.java
similarity index 97%
rename from core/src/main/java/com/topjohnwu/core/tasks/MagiskInstaller.java
rename to app-core/src/main/java/com/topjohnwu/magisk/tasks/MagiskInstaller.java
index d76969fa7..05d5bf111 100644
--- a/core/src/main/java/com/topjohnwu/core/tasks/MagiskInstaller.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/tasks/MagiskInstaller.java
@@ -1,25 +1,25 @@
-package com.topjohnwu.core.tasks;
+package com.topjohnwu.magisk.tasks;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.text.TextUtils;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.R;
-import com.topjohnwu.core.container.TarEntry;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.container.TarEntry;
+import com.topjohnwu.magisk.core.R;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.DownloadProgressListener;
import com.topjohnwu.net.Networking;
+import com.topjohnwu.signing.SignBoot;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
import com.topjohnwu.superuser.internal.NOPList;
import com.topjohnwu.superuser.io.SuFile;
import com.topjohnwu.superuser.io.SuFileInputStream;
import com.topjohnwu.superuser.io.SuFileOutputStream;
-import com.topjohnwu.utils.SignBoot;
import org.kamranzafar.jtar.TarInputStream;
import org.kamranzafar.jtar.TarOutputStream;
diff --git a/core/src/main/java/com/topjohnwu/core/tasks/SafetyNet.java b/app-core/src/main/java/com/topjohnwu/magisk/tasks/SafetyNet.java
similarity index 89%
rename from core/src/main/java/com/topjohnwu/core/tasks/SafetyNet.java
rename to app-core/src/main/java/com/topjohnwu/magisk/tasks/SafetyNet.java
index c0c86be13..be56faeab 100644
--- a/core/src/main/java/com/topjohnwu/core/tasks/SafetyNet.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/tasks/SafetyNet.java
@@ -1,11 +1,11 @@
-package com.topjohnwu.core.tasks;
+package com.topjohnwu.magisk.tasks;
import android.app.Activity;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.ISafetyNetHelper;
-import com.topjohnwu.core.utils.Topic;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.utils.ISafetyNetHelper;
+import com.topjohnwu.magisk.utils.Topic;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.Shell;
diff --git a/core/src/main/java/com/topjohnwu/core/tasks/UpdateRepos.java b/app-core/src/main/java/com/topjohnwu/magisk/tasks/UpdateRepos.java
similarity index 94%
rename from core/src/main/java/com/topjohnwu/core/tasks/UpdateRepos.java
rename to app-core/src/main/java/com/topjohnwu/magisk/tasks/UpdateRepos.java
index 2755514fe..34b97d7da 100644
--- a/core/src/main/java/com/topjohnwu/core/tasks/UpdateRepos.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/tasks/UpdateRepos.java
@@ -1,15 +1,15 @@
-package com.topjohnwu.core.tasks;
+package com.topjohnwu.magisk.tasks;
import android.database.Cursor;
import android.os.AsyncTask;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.container.Repo;
-import com.topjohnwu.core.utils.Logger;
-import com.topjohnwu.core.utils.Topic;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.container.Repo;
+import com.topjohnwu.magisk.utils.Logger;
+import com.topjohnwu.magisk.utils.Topic;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.Networking;
import com.topjohnwu.net.Request;
diff --git a/core/src/main/java/com/topjohnwu/core/utils/ISafetyNetHelper.java b/app-core/src/main/java/com/topjohnwu/magisk/utils/ISafetyNetHelper.java
similarity index 88%
rename from core/src/main/java/com/topjohnwu/core/utils/ISafetyNetHelper.java
rename to app-core/src/main/java/com/topjohnwu/magisk/utils/ISafetyNetHelper.java
index f4d89be8e..52b6f06c7 100644
--- a/core/src/main/java/com/topjohnwu/core/utils/ISafetyNetHelper.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/utils/ISafetyNetHelper.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.core.utils;
+package com.topjohnwu.magisk.utils;
public interface ISafetyNetHelper {
diff --git a/core/src/main/java/com/topjohnwu/core/utils/LocaleManager.java b/app-core/src/main/java/com/topjohnwu/magisk/utils/LocaleManager.java
similarity index 97%
rename from core/src/main/java/com/topjohnwu/core/utils/LocaleManager.java
rename to app-core/src/main/java/com/topjohnwu/magisk/utils/LocaleManager.java
index 6f0409dc0..71df4cf79 100644
--- a/core/src/main/java/com/topjohnwu/core/utils/LocaleManager.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/utils/LocaleManager.java
@@ -1,12 +1,12 @@
-package com.topjohnwu.core.utils;
+package com.topjohnwu.magisk.utils;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Config;
import com.topjohnwu.superuser.Shell;
import java.util.ArrayList;
diff --git a/core/src/main/java/com/topjohnwu/core/utils/Logger.java b/app-core/src/main/java/com/topjohnwu/magisk/utils/Logger.java
similarity index 80%
rename from core/src/main/java/com/topjohnwu/core/utils/Logger.java
rename to app-core/src/main/java/com/topjohnwu/magisk/utils/Logger.java
index 23a53e0fa..fbab69a55 100644
--- a/core/src/main/java/com/topjohnwu/core/utils/Logger.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/utils/Logger.java
@@ -1,9 +1,9 @@
-package com.topjohnwu.core.utils;
+package com.topjohnwu.magisk.utils;
import android.util.Log;
-import com.topjohnwu.core.BuildConfig;
-import com.topjohnwu.core.Const;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.core.BuildConfig;
public class Logger {
diff --git a/core/src/main/java/com/topjohnwu/core/utils/RootUtils.java b/app-core/src/main/java/com/topjohnwu/magisk/utils/RootUtils.java
similarity index 90%
rename from core/src/main/java/com/topjohnwu/core/utils/RootUtils.java
rename to app-core/src/main/java/com/topjohnwu/magisk/utils/RootUtils.java
index f4a31ddef..57109decb 100644
--- a/core/src/main/java/com/topjohnwu/core/utils/RootUtils.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/utils/RootUtils.java
@@ -1,10 +1,10 @@
-package com.topjohnwu.core.utils;
+package com.topjohnwu.magisk.utils;
import android.content.Context;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.R;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.core.R;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
import com.topjohnwu.superuser.io.SuFile;
diff --git a/core/src/main/java/com/topjohnwu/core/utils/Topic.java b/app-core/src/main/java/com/topjohnwu/magisk/utils/Topic.java
similarity index 97%
rename from core/src/main/java/com/topjohnwu/core/utils/Topic.java
rename to app-core/src/main/java/com/topjohnwu/magisk/utils/Topic.java
index 3ddd7fd4b..0c78abe2b 100644
--- a/core/src/main/java/com/topjohnwu/core/utils/Topic.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/utils/Topic.java
@@ -1,6 +1,6 @@
-package com.topjohnwu.core.utils;
+package com.topjohnwu.magisk.utils;
-import com.topjohnwu.core.App;
+import com.topjohnwu.magisk.App;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/core/src/main/java/com/topjohnwu/core/utils/Utils.java b/app-core/src/main/java/com/topjohnwu/magisk/utils/Utils.java
similarity index 94%
rename from core/src/main/java/com/topjohnwu/core/utils/Utils.java
rename to app-core/src/main/java/com/topjohnwu/magisk/utils/Utils.java
index 763817604..223bb0544 100644
--- a/core/src/main/java/com/topjohnwu/core/utils/Utils.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/utils/Utils.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.core.utils;
+package com.topjohnwu.magisk.utils;
import android.content.Context;
import android.content.SharedPreferences;
@@ -13,11 +13,11 @@ import android.os.Build;
import android.provider.OpenableColumns;
import android.widget.Toast;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.container.Module;
-import com.topjohnwu.core.container.ValueSortedMap;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
+import com.topjohnwu.magisk.container.Module;
+import com.topjohnwu.magisk.container.ValueSortedMap;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.io.SuFile;
diff --git a/core/src/main/java/com/topjohnwu/core/utils/ZipUtils.java b/app-core/src/main/java/com/topjohnwu/magisk/utils/ZipUtils.java
similarity index 95%
rename from core/src/main/java/com/topjohnwu/core/utils/ZipUtils.java
rename to app-core/src/main/java/com/topjohnwu/magisk/utils/ZipUtils.java
index 733d9ca63..42bfcbdd8 100644
--- a/core/src/main/java/com/topjohnwu/core/utils/ZipUtils.java
+++ b/app-core/src/main/java/com/topjohnwu/magisk/utils/ZipUtils.java
@@ -1,10 +1,10 @@
-package com.topjohnwu.core.utils;
+package com.topjohnwu.magisk.utils;
+import com.topjohnwu.signing.JarMap;
+import com.topjohnwu.signing.SignAPK;
import com.topjohnwu.superuser.ShellUtils;
import com.topjohnwu.superuser.io.SuFile;
import com.topjohnwu.superuser.io.SuFileOutputStream;
-import com.topjohnwu.utils.JarMap;
-import com.topjohnwu.utils.SignAPK;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
diff --git a/core/src/main/res/raw/bootctl b/app-core/src/main/res/raw/bootctl
similarity index 100%
rename from core/src/main/res/raw/bootctl
rename to app-core/src/main/res/raw/bootctl
diff --git a/core/src/main/res/raw/nonroot_utils.sh b/app-core/src/main/res/raw/nonroot_utils.sh
similarity index 100%
rename from core/src/main/res/raw/nonroot_utils.sh
rename to app-core/src/main/res/raw/nonroot_utils.sh
diff --git a/core/src/main/res/raw/utils.sh b/app-core/src/main/res/raw/utils.sh
similarity index 100%
rename from core/src/main/res/raw/utils.sh
rename to app-core/src/main/res/raw/utils.sh
diff --git a/app/build.gradle b/app/build.gradle
index 7584938e3..583fc3dc3 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,7 +6,7 @@ configProps.load(new FileInputStream(configPath))
android {
defaultConfig {
- applicationId "com.topjohnwu.magisk"
+ applicationId 'com.topjohnwu.magisk'
vectorDrawables.useSupportLibrary = true
}
@@ -33,7 +33,7 @@ android {
}
}
- flavorDimensions "mode"
+ flavorDimensions 'mode'
productFlavors {
full {
@@ -47,7 +47,7 @@ android {
}
stub {
versionCode 1
- versionName "stub"
+ versionName 'stub'
}
}
@@ -59,7 +59,7 @@ android {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':net')
- fullImplementation project(':core')
+ fullImplementation project(':app-core')
fullImplementation 'ru.noties:markwon:2.0.1'
fullImplementation 'com.caverock:androidsvg-aar:1.3'
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 7b0641390..9ede658cd 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -23,14 +23,16 @@
-dontwarn javax.naming.**
# Snet extention
--keepclassmembers class com.topjohnwu.core.utils.ISafetyNetHelper { *; }
--keepclassmembers class com.topjohnwu.core.utils.BootSigner { *; }
+-keepclassmembers class com.topjohnwu.magisk.utils.ISafetyNetHelper { *; }
+
+# BootSigner
+-keepclassmembers class com.topjohnwu.signer.BootSigner { *; }
# SVG
-dontwarn com.caverock.androidsvg.SVGAndroidRenderer
# Strip logging
--assumenosideeffects class com.topjohnwu.core.utils.Logger {
+-assumenosideeffects class com.topjohnwu.magisk.utils.Logger {
public *** debug(...);
}
diff --git a/app/src/full/java/a/a.java b/app/src/full/java/a/a.java
index b97ad15e2..ec5a4e698 100644
--- a/app/src/full/java/a/a.java
+++ b/app/src/full/java/a/a.java
@@ -1,7 +1,7 @@
package a;
-import com.topjohnwu.core.utils.BootSigner;
import com.topjohnwu.magisk.utils.PatchAPK;
+import com.topjohnwu.signing.BootSigner;
import androidx.annotation.Keep;
diff --git a/app/src/full/java/a/e.java b/app/src/full/java/a/e.java
index 3f6cf725f..da51b8f55 100644
--- a/app/src/full/java/a/e.java
+++ b/app/src/full/java/a/e.java
@@ -1,6 +1,6 @@
package a;
-import com.topjohnwu.core.App;
+import com.topjohnwu.magisk.App;
public class e extends App {
/* stub */
diff --git a/app/src/full/java/com/topjohnwu/magisk/AboutActivity.java b/app/src/full/java/com/topjohnwu/magisk/AboutActivity.java
index 6e2a266a7..b73b85b0d 100644
--- a/app/src/full/java/com/topjohnwu/magisk/AboutActivity.java
+++ b/app/src/full/java/com/topjohnwu/magisk/AboutActivity.java
@@ -5,7 +5,6 @@ import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
-import com.topjohnwu.core.Const;
import com.topjohnwu.magisk.components.AboutCardRow;
import com.topjohnwu.magisk.components.BaseActivity;
import com.topjohnwu.magisk.components.MarkDownWindow;
diff --git a/app/src/full/java/com/topjohnwu/magisk/ClassMap.java b/app/src/full/java/com/topjohnwu/magisk/ClassMap.java
index 4acaaa4d9..b819d92a7 100644
--- a/app/src/full/java/com/topjohnwu/magisk/ClassMap.java
+++ b/app/src/full/java/com/topjohnwu/magisk/ClassMap.java
@@ -1,6 +1,5 @@
package com.topjohnwu.magisk;
-import com.topjohnwu.core.App;
import com.topjohnwu.magisk.components.AboutCardRow;
import com.topjohnwu.magisk.receivers.GeneralReceiver;
import com.topjohnwu.magisk.receivers.ShortcutReceiver;
diff --git a/app/src/full/java/com/topjohnwu/magisk/FlashActivity.java b/app/src/full/java/com/topjohnwu/magisk/FlashActivity.java
index 4dba6bc7e..a7b47c57d 100644
--- a/app/src/full/java/com/topjohnwu/magisk/FlashActivity.java
+++ b/app/src/full/java/com/topjohnwu/magisk/FlashActivity.java
@@ -8,13 +8,11 @@ import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.tasks.FlashZip;
-import com.topjohnwu.core.tasks.MagiskInstaller;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.adapters.StringListAdapter;
import com.topjohnwu.magisk.components.BaseActivity;
+import com.topjohnwu.magisk.tasks.FlashZip;
+import com.topjohnwu.magisk.tasks.MagiskInstaller;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.CallbackList;
import com.topjohnwu.superuser.Shell;
diff --git a/app/src/full/java/com/topjohnwu/magisk/MainActivity.java b/app/src/full/java/com/topjohnwu/magisk/MainActivity.java
index 44fc7b589..132fbf2cb 100644
--- a/app/src/full/java/com/topjohnwu/magisk/MainActivity.java
+++ b/app/src/full/java/com/topjohnwu/magisk/MainActivity.java
@@ -9,10 +9,6 @@ import android.view.MenuItem;
import android.view.View;
import com.google.android.material.navigation.NavigationView;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Topic;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.components.BaseActivity;
import com.topjohnwu.magisk.fragments.LogFragment;
import com.topjohnwu.magisk.fragments.MagiskFragment;
@@ -21,6 +17,8 @@ import com.topjohnwu.magisk.fragments.ModulesFragment;
import com.topjohnwu.magisk.fragments.ReposFragment;
import com.topjohnwu.magisk.fragments.SettingsFragment;
import com.topjohnwu.magisk.fragments.SuperuserFragment;
+import com.topjohnwu.magisk.utils.Topic;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.Shell;
diff --git a/app/src/full/java/com/topjohnwu/magisk/SplashActivity.java b/app/src/full/java/com/topjohnwu/magisk/SplashActivity.java
index d04f00a37..6ddcedf2c 100644
--- a/app/src/full/java/com/topjohnwu/magisk/SplashActivity.java
+++ b/app/src/full/java/com/topjohnwu/magisk/SplashActivity.java
@@ -5,16 +5,14 @@ import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.tasks.CheckUpdates;
-import com.topjohnwu.core.tasks.UpdateRepos;
-import com.topjohnwu.core.utils.LocaleManager;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.components.BaseActivity;
import com.topjohnwu.magisk.components.Notifications;
import com.topjohnwu.magisk.receivers.ShortcutReceiver;
+import com.topjohnwu.magisk.tasks.CheckUpdates;
+import com.topjohnwu.magisk.tasks.UpdateRepos;
import com.topjohnwu.magisk.utils.AppUtils;
+import com.topjohnwu.magisk.utils.LocaleManager;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.Shell;
diff --git a/app/src/full/java/com/topjohnwu/magisk/SuRequestActivity.java b/app/src/full/java/com/topjohnwu/magisk/SuRequestActivity.java
index b507ad936..a68845ac4 100644
--- a/app/src/full/java/com/topjohnwu/magisk/SuRequestActivity.java
+++ b/app/src/full/java/com/topjohnwu/magisk/SuRequestActivity.java
@@ -16,9 +16,8 @@ import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.container.Policy;
import com.topjohnwu.magisk.components.BaseActivity;
+import com.topjohnwu.magisk.container.Policy;
import com.topjohnwu.magisk.utils.FingerprintHelper;
import com.topjohnwu.magisk.utils.SuConnector;
diff --git a/app/src/full/java/com/topjohnwu/magisk/adapters/ApplicationAdapter.java b/app/src/full/java/com/topjohnwu/magisk/adapters/ApplicationAdapter.java
index b7f3b3b5e..65c860dd4 100644
--- a/app/src/full/java/com/topjohnwu/magisk/adapters/ApplicationAdapter.java
+++ b/app/src/full/java/com/topjohnwu/magisk/adapters/ApplicationAdapter.java
@@ -13,10 +13,10 @@ import android.widget.Filter;
import android.widget.ImageView;
import android.widget.TextView;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Topic;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.utils.Topic;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import java.util.ArrayList;
diff --git a/app/src/full/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java b/app/src/full/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java
index d46fe2171..662ef0cd7 100644
--- a/app/src/full/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java
+++ b/app/src/full/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java
@@ -10,9 +10,9 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.material.snackbar.Snackbar;
-import com.topjohnwu.core.container.Module;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.SnackbarMaker;
+import com.topjohnwu.magisk.container.Module;
import com.topjohnwu.superuser.Shell;
import java.util.List;
diff --git a/app/src/full/java/com/topjohnwu/magisk/adapters/PolicyAdapter.java b/app/src/full/java/com/topjohnwu/magisk/adapters/PolicyAdapter.java
index 603bf1da5..6fdc06fca 100644
--- a/app/src/full/java/com/topjohnwu/magisk/adapters/PolicyAdapter.java
+++ b/app/src/full/java/com/topjohnwu/magisk/adapters/PolicyAdapter.java
@@ -11,12 +11,12 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.material.snackbar.Snackbar;
-import com.topjohnwu.core.container.Policy;
-import com.topjohnwu.core.database.MagiskDB;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.CustomAlertDialog;
import com.topjohnwu.magisk.components.ExpandableViewHolder;
import com.topjohnwu.magisk.components.SnackbarMaker;
+import com.topjohnwu.magisk.container.Policy;
+import com.topjohnwu.magisk.database.MagiskDB;
import com.topjohnwu.magisk.utils.FingerprintHelper;
import java.util.List;
diff --git a/app/src/full/java/com/topjohnwu/magisk/adapters/ReposAdapter.java b/app/src/full/java/com/topjohnwu/magisk/adapters/ReposAdapter.java
index 9f959f53b..130848fd2 100644
--- a/app/src/full/java/com/topjohnwu/magisk/adapters/ReposAdapter.java
+++ b/app/src/full/java/com/topjohnwu/magisk/adapters/ReposAdapter.java
@@ -12,14 +12,14 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
-import com.topjohnwu.core.container.Module;
-import com.topjohnwu.core.container.Repo;
-import com.topjohnwu.core.database.RepoDatabaseHelper;
import com.topjohnwu.magisk.ClassMap;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.BaseActivity;
import com.topjohnwu.magisk.components.CustomAlertDialog;
import com.topjohnwu.magisk.components.MarkDownWindow;
+import com.topjohnwu.magisk.container.Module;
+import com.topjohnwu.magisk.container.Repo;
+import com.topjohnwu.magisk.database.RepoDatabaseHelper;
import com.topjohnwu.magisk.services.DownloadModuleService;
import java.util.ArrayList;
diff --git a/app/src/full/java/com/topjohnwu/magisk/adapters/SuLogAdapter.java b/app/src/full/java/com/topjohnwu/magisk/adapters/SuLogAdapter.java
index 35613d41c..3bf0fbbc9 100644
--- a/app/src/full/java/com/topjohnwu/magisk/adapters/SuLogAdapter.java
+++ b/app/src/full/java/com/topjohnwu/magisk/adapters/SuLogAdapter.java
@@ -9,10 +9,10 @@ import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import android.widget.TextView;
-import com.topjohnwu.core.container.SuLogEntry;
-import com.topjohnwu.core.database.MagiskDB;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.ExpandableViewHolder;
+import com.topjohnwu.magisk.container.SuLogEntry;
+import com.topjohnwu.magisk.database.MagiskDB;
import java.util.Collections;
import java.util.HashSet;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/BaseActivity.java b/app/src/full/java/com/topjohnwu/magisk/components/BaseActivity.java
index 2b4ebcbdb..eac5571c5 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/BaseActivity.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/BaseActivity.java
@@ -9,12 +9,12 @@ import android.os.Bundle;
import android.view.WindowManager;
import android.widget.Toast;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.LocaleManager;
-import com.topjohnwu.core.utils.Topic;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.utils.LocaleManager;
+import com.topjohnwu.magisk.utils.Topic;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/BaseFragment.java b/app/src/full/java/com/topjohnwu/magisk/components/BaseFragment.java
index c4c5313ed..5669b4f29 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/BaseFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/BaseFragment.java
@@ -2,8 +2,8 @@ package com.topjohnwu.magisk.components;
import android.content.Intent;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.utils.Topic;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.utils.Topic;
import androidx.fragment.app.Fragment;
import butterknife.Unbinder;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/BasePreferenceFragment.java b/app/src/full/java/com/topjohnwu/magisk/components/BasePreferenceFragment.java
index 88f28132c..842b6a1db 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/BasePreferenceFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/BasePreferenceFragment.java
@@ -8,9 +8,9 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.utils.Topic;
+import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.utils.Topic;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/EnvFixDialog.java b/app/src/full/java/com/topjohnwu/magisk/components/EnvFixDialog.java
index 1696e01f7..4c639bb53 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/EnvFixDialog.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/EnvFixDialog.java
@@ -4,9 +4,9 @@ import android.app.Activity;
import android.app.ProgressDialog;
import android.widget.Toast;
-import com.topjohnwu.core.tasks.MagiskInstaller;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.tasks.MagiskInstaller;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.io.SuFile;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/InstallMethodDialog.java b/app/src/full/java/com/topjohnwu/magisk/components/InstallMethodDialog.java
index a8fcbf3f1..b7f46be4c 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/InstallMethodDialog.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/InstallMethodDialog.java
@@ -5,12 +5,12 @@ import android.content.Intent;
import android.widget.Toast;
import com.google.android.material.snackbar.Snackbar;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.ClassMap;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.FlashActivity;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.Networking;
import java.io.File;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/MagiskInstallDialog.java b/app/src/full/java/com/topjohnwu/magisk/components/MagiskInstallDialog.java
index 2a42aebc3..b1b437267 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/MagiskInstallDialog.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/MagiskInstallDialog.java
@@ -3,10 +3,10 @@ package com.topjohnwu.magisk.components;
import android.net.Uri;
import android.text.TextUtils;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.Config;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.utils.AppUtils;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/ManagerInstallDialog.java b/app/src/full/java/com/topjohnwu/magisk/components/ManagerInstallDialog.java
index 02c1afea8..823dd897e 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/ManagerInstallDialog.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/ManagerInstallDialog.java
@@ -3,10 +3,10 @@ package com.topjohnwu.magisk.components;
import android.app.Activity;
import android.text.TextUtils;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.Config;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.utils.DownloadApp;
+import com.topjohnwu.magisk.utils.Utils;
import androidx.annotation.NonNull;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/MarkDownWindow.java b/app/src/full/java/com/topjohnwu/magisk/components/MarkDownWindow.java
index fb803d22a..b8e114ac0 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/MarkDownWindow.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/MarkDownWindow.java
@@ -11,13 +11,13 @@ import android.view.View;
import com.caverock.androidsvg.SVG;
import com.caverock.androidsvg.SVGParseException;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.Networking;
import com.topjohnwu.net.ResponseListener;
+import com.topjohnwu.signing.ByteArrayStream;
import com.topjohnwu.superuser.ShellUtils;
-import com.topjohnwu.utils.ByteArrayStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/Notifications.java b/app/src/full/java/com/topjohnwu/magisk/components/Notifications.java
index 9b2b27e62..7081adedc 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/Notifications.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/Notifications.java
@@ -7,14 +7,14 @@ import android.content.Context;
import android.content.Intent;
import android.os.Build;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.ClassMap;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.SplashActivity;
import com.topjohnwu.magisk.receivers.GeneralReceiver;
+import com.topjohnwu.magisk.utils.Utils;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/ProgressNotification.java b/app/src/full/java/com/topjohnwu/magisk/components/ProgressNotification.java
index 2c397c435..cc056ee87 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/ProgressNotification.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/ProgressNotification.java
@@ -3,9 +3,9 @@ package com.topjohnwu.magisk.components;
import android.app.Notification;
import android.widget.Toast;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.DownloadProgressListener;
import androidx.core.app.NotificationCompat;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/SnackbarMaker.java b/app/src/full/java/com/topjohnwu/magisk/components/SnackbarMaker.java
index d943fd810..120f70861 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/SnackbarMaker.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/SnackbarMaker.java
@@ -6,8 +6,8 @@ import android.view.View;
import android.widget.TextView;
import com.google.android.material.snackbar.Snackbar;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.utils.Utils;
import androidx.annotation.StringRes;
diff --git a/app/src/full/java/com/topjohnwu/magisk/components/UninstallDialog.java b/app/src/full/java/com/topjohnwu/magisk/components/UninstallDialog.java
index 048cbd5ee..cdc2b94c4 100644
--- a/app/src/full/java/com/topjohnwu/magisk/components/UninstallDialog.java
+++ b/app/src/full/java/com/topjohnwu/magisk/components/UninstallDialog.java
@@ -7,12 +7,12 @@ import android.net.Uri;
import android.text.TextUtils;
import android.widget.Toast;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.ClassMap;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.FlashActivity;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.Shell;
diff --git a/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskFragment.java b/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskFragment.java
index 6a69e77f1..6ab839762 100644
--- a/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskFragment.java
@@ -12,12 +12,8 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.tasks.CheckUpdates;
-import com.topjohnwu.core.tasks.SafetyNet;
-import com.topjohnwu.core.utils.ISafetyNetHelper;
-import com.topjohnwu.core.utils.Topic;
import com.topjohnwu.magisk.BuildConfig;
+import com.topjohnwu.magisk.Config;
import com.topjohnwu.magisk.MainActivity;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.BaseActivity;
@@ -29,6 +25,10 @@ import com.topjohnwu.magisk.components.MagiskInstallDialog;
import com.topjohnwu.magisk.components.ManagerInstallDialog;
import com.topjohnwu.magisk.components.UninstallDialog;
import com.topjohnwu.magisk.components.UpdateCardHolder;
+import com.topjohnwu.magisk.tasks.CheckUpdates;
+import com.topjohnwu.magisk.tasks.SafetyNet;
+import com.topjohnwu.magisk.utils.ISafetyNetHelper;
+import com.topjohnwu.magisk.utils.Topic;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
diff --git a/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskHideFragment.java b/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskHideFragment.java
index 56c95a42c..ac9599db4 100644
--- a/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskHideFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskHideFragment.java
@@ -8,10 +8,10 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.SearchView;
-import com.topjohnwu.core.utils.Topic;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.adapters.ApplicationAdapter;
import com.topjohnwu.magisk.components.BaseFragment;
+import com.topjohnwu.magisk.utils.Topic;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
diff --git a/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskLogFragment.java b/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskLogFragment.java
index 9c3ae977f..fa65f27c3 100644
--- a/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskLogFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/fragments/MagiskLogFragment.java
@@ -10,12 +10,12 @@ import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.snackbar.Snackbar;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.adapters.StringListAdapter;
import com.topjohnwu.magisk.components.BaseFragment;
import com.topjohnwu.magisk.components.SnackbarMaker;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.internal.NOPList;
diff --git a/app/src/full/java/com/topjohnwu/magisk/fragments/ModulesFragment.java b/app/src/full/java/com/topjohnwu/magisk/fragments/ModulesFragment.java
index 3a68fc80e..d8aba23ba 100644
--- a/app/src/full/java/com/topjohnwu/magisk/fragments/ModulesFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/fragments/ModulesFragment.java
@@ -12,15 +12,15 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.container.Module;
-import com.topjohnwu.core.utils.Topic;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.ClassMap;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.FlashActivity;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.adapters.ModulesAdapter;
import com.topjohnwu.magisk.components.BaseFragment;
+import com.topjohnwu.magisk.container.Module;
+import com.topjohnwu.magisk.utils.Topic;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import java.util.ArrayList;
diff --git a/app/src/full/java/com/topjohnwu/magisk/fragments/ReposFragment.java b/app/src/full/java/com/topjohnwu/magisk/fragments/ReposFragment.java
index 491225eae..28c179291 100644
--- a/app/src/full/java/com/topjohnwu/magisk/fragments/ReposFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/fragments/ReposFragment.java
@@ -11,13 +11,13 @@ import android.view.ViewGroup;
import android.widget.SearchView;
import android.widget.TextView;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.container.Module;
-import com.topjohnwu.core.tasks.UpdateRepos;
-import com.topjohnwu.core.utils.Topic;
+import com.topjohnwu.magisk.Config;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.adapters.ReposAdapter;
import com.topjohnwu.magisk.components.BaseFragment;
+import com.topjohnwu.magisk.container.Module;
+import com.topjohnwu.magisk.tasks.UpdateRepos;
+import com.topjohnwu.magisk.utils.Topic;
import java.util.Map;
diff --git a/app/src/full/java/com/topjohnwu/magisk/fragments/SettingsFragment.java b/app/src/full/java/com/topjohnwu/magisk/fragments/SettingsFragment.java
index cf5b41efb..dd35da6a6 100644
--- a/app/src/full/java/com/topjohnwu/magisk/fragments/SettingsFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/fragments/SettingsFragment.java
@@ -8,19 +8,19 @@ import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.tasks.CheckUpdates;
-import com.topjohnwu.core.utils.LocaleManager;
-import com.topjohnwu.core.utils.Topic;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.BuildConfig;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.BasePreferenceFragment;
+import com.topjohnwu.magisk.tasks.CheckUpdates;
import com.topjohnwu.magisk.utils.AppUtils;
import com.topjohnwu.magisk.utils.DownloadApp;
import com.topjohnwu.magisk.utils.FingerprintHelper;
+import com.topjohnwu.magisk.utils.LocaleManager;
import com.topjohnwu.magisk.utils.PatchAPK;
+import com.topjohnwu.magisk.utils.Topic;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.Shell;
diff --git a/app/src/full/java/com/topjohnwu/magisk/fragments/SuperuserFragment.java b/app/src/full/java/com/topjohnwu/magisk/fragments/SuperuserFragment.java
index 8b291bb40..7e459d290 100644
--- a/app/src/full/java/com/topjohnwu/magisk/fragments/SuperuserFragment.java
+++ b/app/src/full/java/com/topjohnwu/magisk/fragments/SuperuserFragment.java
@@ -7,10 +7,10 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-import com.topjohnwu.core.container.Policy;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.adapters.PolicyAdapter;
import com.topjohnwu.magisk.components.BaseFragment;
+import com.topjohnwu.magisk.container.Policy;
import java.util.List;
diff --git a/app/src/full/java/com/topjohnwu/magisk/receivers/GeneralReceiver.java b/app/src/full/java/com/topjohnwu/magisk/receivers/GeneralReceiver.java
index 27dec2c4b..9eda0b19b 100644
--- a/app/src/full/java/com/topjohnwu/magisk/receivers/GeneralReceiver.java
+++ b/app/src/full/java/com/topjohnwu/magisk/receivers/GeneralReceiver.java
@@ -5,10 +5,10 @@ import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
+import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.ClassMap;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.SuRequestActivity;
import com.topjohnwu.magisk.components.Notifications;
import com.topjohnwu.magisk.utils.DownloadApp;
diff --git a/app/src/full/java/com/topjohnwu/magisk/receivers/ShortcutReceiver.java b/app/src/full/java/com/topjohnwu/magisk/receivers/ShortcutReceiver.java
index 331905db4..15786757c 100644
--- a/app/src/full/java/com/topjohnwu/magisk/receivers/ShortcutReceiver.java
+++ b/app/src/full/java/com/topjohnwu/magisk/receivers/ShortcutReceiver.java
@@ -8,13 +8,13 @@ import android.content.pm.ShortcutManager;
import android.graphics.drawable.Icon;
import android.os.Build;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.ClassMap;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.SplashActivity;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import java.util.ArrayList;
diff --git a/app/src/full/java/com/topjohnwu/magisk/services/DelegateWorker.java b/app/src/full/java/com/topjohnwu/magisk/services/DelegateWorker.java
index f0b2fc618..b7bf20cfc 100644
--- a/app/src/full/java/com/topjohnwu/magisk/services/DelegateWorker.java
+++ b/app/src/full/java/com/topjohnwu/magisk/services/DelegateWorker.java
@@ -9,17 +9,13 @@ import com.google.common.util.concurrent.ListenableFuture;
import java.util.List;
import java.util.Set;
import java.util.UUID;
-import java.util.concurrent.Executor;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
-import androidx.annotation.RestrictTo;
import androidx.work.Data;
import androidx.work.ListenableWorker;
-import androidx.work.WorkerFactory;
-import androidx.work.impl.utils.taskexecutor.TaskExecutor;
public abstract class DelegateWorker {
diff --git a/app/src/full/java/com/topjohnwu/magisk/services/DownloadModuleService.java b/app/src/full/java/com/topjohnwu/magisk/services/DownloadModuleService.java
index 2528c11dd..eb0198f0a 100644
--- a/app/src/full/java/com/topjohnwu/magisk/services/DownloadModuleService.java
+++ b/app/src/full/java/com/topjohnwu/magisk/services/DownloadModuleService.java
@@ -6,13 +6,13 @@ import android.net.Uri;
import android.os.IBinder;
import android.widget.Toast;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.container.Repo;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.ClassMap;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.FlashActivity;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.ProgressNotification;
+import com.topjohnwu.magisk.container.Repo;
+import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.net.Networking;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
diff --git a/app/src/full/java/com/topjohnwu/magisk/services/UpdateCheckService.java b/app/src/full/java/com/topjohnwu/magisk/services/UpdateCheckService.java
index 73eb86bcc..15b355a6b 100644
--- a/app/src/full/java/com/topjohnwu/magisk/services/UpdateCheckService.java
+++ b/app/src/full/java/com/topjohnwu/magisk/services/UpdateCheckService.java
@@ -1,9 +1,9 @@
package com.topjohnwu.magisk.services;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.tasks.CheckUpdates;
import com.topjohnwu.magisk.BuildConfig;
+import com.topjohnwu.magisk.Config;
import com.topjohnwu.magisk.components.Notifications;
+import com.topjohnwu.magisk.tasks.CheckUpdates;
import com.topjohnwu.superuser.Shell;
import androidx.annotation.NonNull;
diff --git a/app/src/full/java/com/topjohnwu/magisk/utils/AppUtils.java b/app/src/full/java/com/topjohnwu/magisk/utils/AppUtils.java
index d32a24f99..054b60e00 100644
--- a/app/src/full/java/com/topjohnwu/magisk/utils/AppUtils.java
+++ b/app/src/full/java/com/topjohnwu/magisk/utils/AppUtils.java
@@ -5,10 +5,9 @@ import android.content.Intent;
import android.net.Uri;
import android.widget.Toast;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Utils;
import com.topjohnwu.magisk.ClassMap;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.services.UpdateCheckService;
diff --git a/app/src/full/java/com/topjohnwu/magisk/utils/DownloadApp.java b/app/src/full/java/com/topjohnwu/magisk/utils/DownloadApp.java
index f99ece29e..f1fdb0ee4 100644
--- a/app/src/full/java/com/topjohnwu/magisk/utils/DownloadApp.java
+++ b/app/src/full/java/com/topjohnwu/magisk/utils/DownloadApp.java
@@ -2,11 +2,9 @@ package com.topjohnwu.magisk.utils;
import android.os.AsyncTask;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.utils.RootUtils;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.BuildConfig;
+import com.topjohnwu.magisk.Config;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.ProgressNotification;
import com.topjohnwu.net.Networking;
diff --git a/app/src/full/java/com/topjohnwu/magisk/utils/FingerprintHelper.java b/app/src/full/java/com/topjohnwu/magisk/utils/FingerprintHelper.java
index b334e6777..41119936a 100644
--- a/app/src/full/java/com/topjohnwu/magisk/utils/FingerprintHelper.java
+++ b/app/src/full/java/com/topjohnwu/magisk/utils/FingerprintHelper.java
@@ -16,10 +16,9 @@ import android.security.keystore.KeyProperties;
import android.view.Gravity;
import android.widget.Toast;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.CustomAlertDialog;
diff --git a/app/src/full/java/com/topjohnwu/magisk/utils/PatchAPK.java b/app/src/full/java/com/topjohnwu/magisk/utils/PatchAPK.java
index a8e8c5bfd..b80abc12d 100644
--- a/app/src/full/java/com/topjohnwu/magisk/utils/PatchAPK.java
+++ b/app/src/full/java/com/topjohnwu/magisk/utils/PatchAPK.java
@@ -3,17 +3,15 @@ package com.topjohnwu.magisk.utils;
import android.os.AsyncTask;
import android.widget.Toast;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.Const;
-import com.topjohnwu.core.utils.RootUtils;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.BuildConfig;
+import com.topjohnwu.magisk.Config;
+import com.topjohnwu.magisk.Const;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.components.Notifications;
+import com.topjohnwu.signing.JarMap;
+import com.topjohnwu.signing.SignAPK;
import com.topjohnwu.superuser.ShellUtils;
-import com.topjohnwu.utils.JarMap;
-import com.topjohnwu.utils.SignAPK;
import java.io.BufferedOutputStream;
import java.io.File;
diff --git a/app/src/full/java/com/topjohnwu/magisk/utils/SuConnector.java b/app/src/full/java/com/topjohnwu/magisk/utils/SuConnector.java
index e38936211..a5030b212 100644
--- a/app/src/full/java/com/topjohnwu/magisk/utils/SuConnector.java
+++ b/app/src/full/java/com/topjohnwu/magisk/utils/SuConnector.java
@@ -9,12 +9,11 @@ import android.os.Process;
import android.text.TextUtils;
import android.widget.Toast;
-import com.topjohnwu.core.App;
-import com.topjohnwu.core.Config;
-import com.topjohnwu.core.container.Policy;
-import com.topjohnwu.core.container.SuLogEntry;
-import com.topjohnwu.core.utils.Utils;
+import com.topjohnwu.magisk.App;
+import com.topjohnwu.magisk.Config;
import com.topjohnwu.magisk.R;
+import com.topjohnwu.magisk.container.Policy;
+import com.topjohnwu.magisk.container.SuLogEntry;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
diff --git a/build.py b/build.py
index 879927339..25f440d75 100755
--- a/build.py
+++ b/build.py
@@ -89,7 +89,7 @@ def zip_with_msg(zipfile, source, target):
def collect_binary():
for arch in archs:
mkdir_p(os.path.join('native', 'out', arch))
- for bin in ['magisk', 'magiskinit', 'magiskboot', 'busybox', 'b64xz']:
+ for bin in ['magisk', 'magiskinit', 'magiskboot', 'busybox']:
source = os.path.join('native', 'libs', arch, bin)
target = os.path.join('native', 'out', arch, bin)
mv(source, target)
@@ -105,11 +105,11 @@ def xz(data):
def sign_zip(unsigned, output, release):
signer_name = 'zipsigner-3.0.jar'
- zipsigner = os.path.join('utils', 'build', 'libs', signer_name)
+ zipsigner = os.path.join('signing', 'build', 'libs', signer_name)
if not os.path.exists(zipsigner):
header('* Building ' + signer_name)
- proc = execv([gradlew, 'utils:shadowJar'])
+ proc = execv([gradlew, 'signing:shadowJar'])
if proc.returncode != 0:
error(f'Build {signer_name} failed!')
@@ -236,7 +236,7 @@ def build_apk(args, flavor):
def build_app(args):
source = os.path.join('scripts', 'util_functions.sh')
- target = os.path.join('core', 'src', 'main', 'res', 'raw', 'util_functions.sh')
+ target = os.path.join('app-core', 'src', 'main', 'res', 'raw', 'util_functions.sh')
cp(source, target)
build_apk(args, 'Full')
@@ -379,7 +379,7 @@ def cleanup(args):
if 'java' in args.target:
header('* Cleaning java')
- execv([gradlew, 'app:clean', 'snet:clean', 'utils:clean'])
+ execv([gradlew, 'app:clean', 'app-core:clean', 'snet:clean', 'signing:clean'])
def build_all(args):
vars(args)['target'] = []
diff --git a/native/src/main/AndroidManifest.xml b/native/src/main/AndroidManifest.xml
index f0344fa1a..313dd37a6 100644
--- a/native/src/main/AndroidManifest.xml
+++ b/native/src/main/AndroidManifest.xml
@@ -1 +1 @@
-
+
diff --git a/settings.gradle b/settings.gradle
index f7aace374..98e7873e1 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':native', ':utils', ':snet', ':net', ':core'
+include ':app', ':app-core', ':net', ':signing', ':native', ':snet'
diff --git a/utils/.gitignore b/signing/.gitignore
similarity index 100%
rename from utils/.gitignore
rename to signing/.gitignore
diff --git a/utils/build.gradle b/signing/build.gradle
similarity index 90%
rename from utils/build.gradle
rename to signing/build.gradle
index 9ae55e2e1..339e21088 100644
--- a/utils/build.gradle
+++ b/signing/build.gradle
@@ -8,7 +8,7 @@ targetCompatibility = "1.8"
jar {
manifest {
- attributes 'Main-Class': 'com.topjohnwu.utils.ZipSigner'
+ attributes 'Main-Class': 'com.topjohnwu.signing.ZipSigner'
}
}
diff --git a/core/src/main/java/com/topjohnwu/core/utils/BootSigner.java b/signing/src/main/java/com/topjohnwu/signing/BootSigner.java
similarity index 95%
rename from core/src/main/java/com/topjohnwu/core/utils/BootSigner.java
rename to signing/src/main/java/com/topjohnwu/signing/BootSigner.java
index 107e7c87b..6a7c3f91b 100644
--- a/core/src/main/java/com/topjohnwu/core/utils/BootSigner.java
+++ b/signing/src/main/java/com/topjohnwu/signing/BootSigner.java
@@ -1,6 +1,4 @@
-package com.topjohnwu.core.utils;
-
-import com.topjohnwu.utils.SignBoot;
+package com.topjohnwu.signing;
import java.io.FileInputStream;
import java.io.InputStream;
diff --git a/utils/src/main/java/com/topjohnwu/utils/ByteArrayStream.java b/signing/src/main/java/com/topjohnwu/signing/ByteArrayStream.java
similarity index 96%
rename from utils/src/main/java/com/topjohnwu/utils/ByteArrayStream.java
rename to signing/src/main/java/com/topjohnwu/signing/ByteArrayStream.java
index ef534574d..5b0722aa3 100644
--- a/utils/src/main/java/com/topjohnwu/utils/ByteArrayStream.java
+++ b/signing/src/main/java/com/topjohnwu/signing/ByteArrayStream.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.utils;
+package com.topjohnwu.signing;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
diff --git a/utils/src/main/java/com/topjohnwu/utils/CryptoUtils.java b/signing/src/main/java/com/topjohnwu/signing/CryptoUtils.java
similarity index 99%
rename from utils/src/main/java/com/topjohnwu/utils/CryptoUtils.java
rename to signing/src/main/java/com/topjohnwu/signing/CryptoUtils.java
index 6492c071f..a80963f06 100644
--- a/utils/src/main/java/com/topjohnwu/utils/CryptoUtils.java
+++ b/signing/src/main/java/com/topjohnwu/signing/CryptoUtils.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.utils;
+package com.topjohnwu.signing;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
diff --git a/utils/src/main/java/com/topjohnwu/utils/JarMap.java b/signing/src/main/java/com/topjohnwu/signing/JarMap.java
similarity index 99%
rename from utils/src/main/java/com/topjohnwu/utils/JarMap.java
rename to signing/src/main/java/com/topjohnwu/signing/JarMap.java
index a59c0c76e..44e61e11b 100644
--- a/utils/src/main/java/com/topjohnwu/utils/JarMap.java
+++ b/signing/src/main/java/com/topjohnwu/signing/JarMap.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.utils;
+package com.topjohnwu.signing;
import java.io.Closeable;
import java.io.File;
diff --git a/utils/src/main/java/com/topjohnwu/utils/SignAPK.java b/signing/src/main/java/com/topjohnwu/signing/SignAPK.java
similarity index 99%
rename from utils/src/main/java/com/topjohnwu/utils/SignAPK.java
rename to signing/src/main/java/com/topjohnwu/signing/SignAPK.java
index 5586ea40e..711256cc5 100644
--- a/utils/src/main/java/com/topjohnwu/utils/SignAPK.java
+++ b/signing/src/main/java/com/topjohnwu/signing/SignAPK.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.utils;
+package com.topjohnwu.signing;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
diff --git a/utils/src/main/java/com/topjohnwu/utils/SignBoot.java b/signing/src/main/java/com/topjohnwu/signing/SignBoot.java
similarity index 99%
rename from utils/src/main/java/com/topjohnwu/utils/SignBoot.java
rename to signing/src/main/java/com/topjohnwu/signing/SignBoot.java
index b9137c30f..2a877e14d 100644
--- a/utils/src/main/java/com/topjohnwu/utils/SignBoot.java
+++ b/signing/src/main/java/com/topjohnwu/signing/SignBoot.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.utils;
+package com.topjohnwu.signing;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1EncodableVector;
diff --git a/utils/src/main/java/com/topjohnwu/utils/ZipAdjust.java b/signing/src/main/java/com/topjohnwu/signing/ZipAdjust.java
similarity index 99%
rename from utils/src/main/java/com/topjohnwu/utils/ZipAdjust.java
rename to signing/src/main/java/com/topjohnwu/signing/ZipAdjust.java
index 6437e4e6d..d673e09bb 100644
--- a/utils/src/main/java/com/topjohnwu/utils/ZipAdjust.java
+++ b/signing/src/main/java/com/topjohnwu/signing/ZipAdjust.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.utils;
+package com.topjohnwu.signing;
import java.io.File;
import java.io.FileOutputStream;
diff --git a/utils/src/main/java/com/topjohnwu/utils/ZipSigner.java b/signing/src/main/java/com/topjohnwu/signing/ZipSigner.java
similarity index 98%
rename from utils/src/main/java/com/topjohnwu/utils/ZipSigner.java
rename to signing/src/main/java/com/topjohnwu/signing/ZipSigner.java
index 39c820006..cb437f9bf 100644
--- a/utils/src/main/java/com/topjohnwu/utils/ZipSigner.java
+++ b/signing/src/main/java/com/topjohnwu/signing/ZipSigner.java
@@ -1,4 +1,4 @@
-package com.topjohnwu.utils;
+package com.topjohnwu.signing;
import java.io.FileInputStream;
import java.io.FileOutputStream;
diff --git a/utils/src/main/resources/keys/testkey.pk8 b/signing/src/main/resources/keys/testkey.pk8
similarity index 100%
rename from utils/src/main/resources/keys/testkey.pk8
rename to signing/src/main/resources/keys/testkey.pk8
diff --git a/utils/src/main/resources/keys/testkey.x509.pem b/signing/src/main/resources/keys/testkey.x509.pem
similarity index 100%
rename from utils/src/main/resources/keys/testkey.x509.pem
rename to signing/src/main/resources/keys/testkey.x509.pem
diff --git a/snet/build.gradle b/snet/build.gradle
index 575e504ad..669a06b5d 100644
--- a/snet/build.gradle
+++ b/snet/build.gradle
@@ -2,10 +2,10 @@ apply plugin: 'com.android.application'
android {
defaultConfig {
- applicationId "com.topjohnwu.snet"
+ applicationId 'com.topjohnwu.snet'
minSdkVersion 14
versionCode 12
- versionName "snet"
+ versionName 'snet'
}
buildTypes {