Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
3671d41
test binder
JingMatrix Mar 24, 2026
a456ccf
Start refactoring daemon into Kotlin
JingMatrix Mar 25, 2026
069cf26
Refactor phase 1
JingMatrix Mar 25, 2026
19aa44e
Refactor phase 2
JingMatrix Mar 25, 2026
a54004b
Refactor phase 3 and 4 (part done)
JingMatrix Mar 25, 2026
d1f4cd9
Refactor phase 5
JingMatrix Mar 25, 2026
cf240e5
Fix compilation errors
JingMatrix Mar 25, 2026
3073b6f
Refactor phase 6
JingMatrix Mar 25, 2026
248af09
Complete implementation
JingMatrix Mar 26, 2026
c5becbe
Fix i18n support
JingMatrix Mar 26, 2026
558b04b
Correct JNI names
JingMatrix Mar 26, 2026
e924625
Fix databasehelper initilization
JingMatrix Mar 26, 2026
75a8ede
Fix runtime bugs
JingMatrix Mar 26, 2026
c22dfcf
Fix notification
JingMatrix Mar 26, 2026
6fcc6f5
Fix manager
JingMatrix Mar 26, 2026
2579c9a
Fix manager status
JingMatrix Mar 26, 2026
727854f
Add docs
JingMatrix Mar 26, 2026
a472c42
fix compilation
JingMatrix Mar 26, 2026
4372185
fix format
JingMatrix Mar 26, 2026
37f2509
Add cache permission fix
JingMatrix Mar 26, 2026
e35a380
Refactor CacheConfig
JingMatrix Mar 26, 2026
a579895
update readme
JingMatrix Mar 26, 2026
eca6421
catch package parsing error
JingMatrix Mar 26, 2026
b08ed54
[skip ci] improve doc
JingMatrix Mar 26, 2026
80e382f
Remove Java code
JingMatrix Mar 26, 2026
ba9e6de
minor improvements
JingMatrix Mar 26, 2026
8dab518
Support Android 17 beta3
JingMatrix Mar 27, 2026
03541fc
improve logging
JingMatrix Mar 27, 2026
5e35893
Fix proguard rules
JingMatrix Mar 27, 2026
e2f2179
Fix enable modules
JingMatrix Mar 27, 2026
8b6cedb
Add cli feature
JingMatrix Mar 28, 2026
9dc1046
Fix notification
JingMatrix Mar 28, 2026
3e17a1d
Fix package filtering
JingMatrix Mar 28, 2026
a0ad43c
Fix modules loading
JingMatrix Mar 28, 2026
9d36dad
Force socket listening
JingMatrix Mar 29, 2026
6bbbe0b
Force IContentProvider.call signature
JingMatrix Mar 29, 2026
3aa5d8a
Fix comments
JingMatrix Mar 29, 2026
5f29e5d
Force using readonly database for getModulePrefs
JingMatrix Mar 29, 2026
6a96f84
Fix database deadlock and improve structure
JingMatrix Mar 31, 2026
cfe5d40
Avoid using two database connections
JingMatrix Mar 31, 2026
f6e6313
Remove log watchlog completely
JingMatrix Mar 31, 2026
76e431c
Discard workaround for early database reading
JingMatrix Mar 31, 2026
865ca63
Update daemonState
JingMatrix Mar 31, 2026
d015eb6
Remove user configuration of dex obfuscation
JingMatrix Mar 31, 2026
510c407
Unify logging styles of LOGD and LOGV
JingMatrix Mar 31, 2026
2cd74bf
Bypass SQLiteCompatibilityWalFlags check to prevent SecurityException
JingMatrix Mar 31, 2026
44eaa17
Merge branch 'master' into refactor
JingMatrix Mar 31, 2026
ff8ce9a
Tune log levels
JingMatrix Mar 31, 2026
d83c178
Add libxposed namespace to the obfuscation list
JingMatrix Mar 31, 2026
0e84ff3
Allow toggling status notification
JingMatrix Apr 1, 2026
dad88bd
Add receiver of ACTION_CONFIGURATION_CHANGED
JingMatrix Apr 1, 2026
b9522e4
Restore re-injection logic of sendToBridge
JingMatrix Apr 1, 2026
dd60508
Fix bugs in manager service
JingMatrix Apr 1, 2026
510d0fa
Distinguish two type of Vector manager
JingMatrix Apr 1, 2026
8c5f200
Add workaround based static fields
JingMatrix Apr 1, 2026
25e7c23
Minor fixes
JingMatrix Apr 1, 2026
69a6048
Improve notification
JingMatrix Apr 1, 2026
0f0513c
[skip ci] use buildConfig
JingMatrix Apr 1, 2026
dfe359e
[skip ci] Update Zygisk docs
JingMatrix Apr 1, 2026
8efb40a
[skip ci] Update daemon docs
JingMatrix Apr 1, 2026
d3a4935
Merge branch 'master' into refactor
JingMatrix Apr 2, 2026
510dd72
minor fix
JingMatrix Apr 3, 2026
556cadf
Add back scope rm commands
JingMatrix Apr 3, 2026
0dbbcc5
XSharedPreferences: Fix NoSuchMethodError on Android 17 Beta 3
JingMatrix Apr 3, 2026
63ba865
Use human readable permission
JingMatrix Apr 3, 2026
8609658
Add database commands to Cli
JingMatrix Apr 3, 2026
60a7cc2
Refactor native logcat monitor for performance
JingMatrix Apr 4, 2026
b2b6d9b
Treat module as legacy a priori
JingMatrix Apr 4, 2026
feb5a91
Show system server modules in exported scopes.txt
JingMatrix Apr 4, 2026
4cf6d56
[skip ci] minor fix
JingMatrix Apr 4, 2026
c9a18cb
Fix process name compatibility with legacy modules
JingMatrix Apr 4, 2026
05fc12a
Remove package config when uninstalled
JingMatrix Apr 4, 2026
95cc832
Remove in-app flashing and denylist checking
JingMatrix Apr 4, 2026
becd393
Recover logging of daemon process
JingMatrix Apr 5, 2026
2eb170e
Allow migrating from LSPosed v2.0 database
JingMatrix Apr 5, 2026
8e4c793
Setup module loading prioirty
JingMatrix Apr 5, 2026
698646e
Correctly setup preference directory permissions
JingMatrix Apr 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ plugins {
alias(libs.plugins.nav.safeargs)
alias(libs.plugins.autoresconfig)
alias(libs.plugins.materialthemebuilder)
alias(libs.plugins.lsplugin.resopt)
alias(libs.plugins.lsplugin.apksign)
}

Expand Down
1 change: 0 additions & 1 deletion app/src/main/java/org/lsposed/manager/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ private static String readWebviewHTML(String name) {
var list = AppHelper.getAppList(false);
var pm = App.getInstance().getPackageManager();
list.parallelStream().forEach(i -> AppHelper.getAppLabel(i, pm));
AppHelper.getDenyList(false);
ModuleUtil.getInstance();
RepoLoader.getInstance();
});
Expand Down
65 changes: 0 additions & 65 deletions app/src/main/java/org/lsposed/manager/ConfigManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -178,25 +178,6 @@ public static boolean setVerboseLogEnabled(boolean enabled) {
}
}

public static boolean isLogWatchdogEnabled() {
try {
return LSPManagerServiceHolder.getService().isLogWatchdogEnabled();
} catch (RemoteException e) {
Log.e(App.TAG, Log.getStackTraceString(e));
return false;
}
}

public static boolean setLogWatchdog(boolean enabled) {
try {
LSPManagerServiceHolder.getService().setLogWatchdog(enabled);
return true;
} catch (RemoteException e) {
Log.e(App.TAG, Log.getStackTraceString(e));
return false;
}
}

public static ParcelFileDescriptor getLog(boolean verbose) {
try {
return verbose ? LSPManagerServiceHolder.getService().getVerboseLog() : LSPManagerServiceHolder.getService().getModulesLog();
Expand Down Expand Up @@ -336,52 +317,6 @@ public static boolean setHiddenIcon(boolean hide) {
}
}

public static String getApi() {
try {
return LSPManagerServiceHolder.getService().getApi();
} catch (RemoteException e) {
Log.e(App.TAG, Log.getStackTraceString(e));
return e.toString();
}
}

public static List<String> getDenyListPackages() {
List<String> list = new ArrayList<>();
try {
list.addAll(LSPManagerServiceHolder.getService().getDenyListPackages());
} catch (RemoteException e) {
Log.e(App.TAG, Log.getStackTraceString(e));
}
return list;
}

public static void flashZip(String zipPath, ParcelFileDescriptor outputStream) {
try {
LSPManagerServiceHolder.getService().flashZip(zipPath, outputStream);
} catch (RemoteException e) {
Log.e(App.TAG, Log.getStackTraceString(e));
}
}

public static boolean isDexObfuscateEnabled() {
try {
return LSPManagerServiceHolder.getService().getDexObfuscate();
} catch (RemoteException e) {
Log.e(App.TAG, Log.getStackTraceString(e));
return false;
}
}

public static boolean setDexObfuscateEnabled(boolean enabled) {
try {
LSPManagerServiceHolder.getService().setDexObfuscate(enabled);
return true;
} catch (RemoteException e) {
Log.e(App.TAG, Log.getStackTraceString(e));
return false;
}
}

public static int getDex2OatWrapperCompatibility() {
try {
return LSPManagerServiceHolder.getService().getDex2OatWrapperCompatibility();
Expand Down
7 changes: 0 additions & 7 deletions app/src/main/java/org/lsposed/manager/adapters/AppHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -155,13 +155,6 @@ synchronized public static List<PackageInfo> getAppList(boolean force) {
return appList;
}

synchronized public static List<String> getDenyList(boolean force) {
if (denyList == null || force) {
denyList = ConfigManager.getDenyListPackages();
}
return denyList;
}

public static CharSequence getAppLabel(PackageInfo info, PackageManager pm) {
if (info == null || info.applicationInfo == null) return null;
return appLabel.computeIfAbsent(info, i -> i.applicationInfo.loadLabel(pm));
Expand Down
30 changes: 1 addition & 29 deletions app/src/main/java/org/lsposed/manager/adapters/ScopeAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ public class ScopeAdapter extends EmptyStateRecyclerView.EmptyStateAdapter<Scope
private Set<ApplicationWithEquals> checkedList = new HashSet<>();
private List<AppInfo> searchList = new ArrayList<>();
private List<AppInfo> showList = new ArrayList<>();
private List<String> denyList = new ArrayList<>();

public RecyclerView.Adapter<RecyclerView.ViewHolder> switchAdaptor = new RecyclerView.Adapter<>() {
@NonNull
Expand Down Expand Up @@ -170,11 +169,6 @@ private boolean shouldHideApp(PackageInfo info, ApplicationWithEquals app, HashS
if (tmpChkList.contains(app)) {
return false;
}
if (preferences.getBoolean("filter_denylist", false)) {
if (denyList.contains(info.packageName)) {
return true;
}
}
if (preferences.getBoolean("filter_modules", true)) {
if (ModuleUtil.getInstance().getModule(info.packageName, info.applicationInfo.uid / App.PER_USER_RANGE) != null) {
return true;
Expand Down Expand Up @@ -271,9 +265,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
} else if (itemId == R.id.item_filter_modules) {
item.setChecked(!item.isChecked());
preferences.edit().putBoolean("filter_modules", item.isChecked()).apply();
} else if (itemId == R.id.item_filter_denylist) {
item.setChecked(!item.isChecked());
preferences.edit().putBoolean("filter_denylist", item.isChecked()).apply();
} else if (itemId == R.id.backup) {
LocalDateTime now = LocalDateTime.now();
try {
Expand Down Expand Up @@ -368,7 +359,6 @@ public void onPrepareOptionsMenu(@NonNull Menu menu) {
menu.findItem(R.id.item_filter_system).setChecked(preferences.getBoolean("filter_system_apps", true));
menu.findItem(R.id.item_filter_games).setChecked(preferences.getBoolean("filter_games", true));
menu.findItem(R.id.item_filter_modules).setChecked(preferences.getBoolean("filter_modules", true));
menu.findItem(R.id.item_filter_denylist).setChecked(preferences.getBoolean("filter_denylist", false));
switch (preferences.getInt("list_sort", 0)) {
case 7 -> {
menu.findItem(R.id.item_sort_by_update_time).setChecked(true);
Expand Down Expand Up @@ -405,8 +395,7 @@ public void onViewRecycled(@NonNull ViewHolder holder) {
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
AppInfo appInfo = showList.get(position);
boolean deny = denyList.contains(appInfo.packageName);
holder.root.setAlpha(!deny && enabled ? 1.0f : .5f);
holder.root.setAlpha(enabled ? 1.0f : .5f);
boolean system = appInfo.packageName.equals("system");
CharSequence appName;
int userId = appInfo.applicationInfo.uid / App.PER_USER_RANGE;
Expand Down Expand Up @@ -452,20 +441,6 @@ public void onLoadFailed(@Nullable Drawable errorDrawable) {
}
sb.setSpan(foregroundColorSpan, sb.length() - recommended.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
if (deny) {
if (sb.length() != 0) sb.append("\n");
String denylist = activity.getString(R.string.deny_list_info);
sb.append(denylist);
final ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(ResourceUtils.resolveColor(activity.getTheme(), com.google.android.material.R.attr.colorError));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
final TypefaceSpan typefaceSpan = new TypefaceSpan(Typeface.create("sans-serif-medium", Typeface.NORMAL));
sb.setSpan(typefaceSpan, sb.length() - denylist.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
} else {
final StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);
sb.setSpan(styleSpan, sb.length() - denylist.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
sb.setSpan(foregroundColorSpan, sb.length() - denylist.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
if (sb.length() == 0) {
holder.hint.setVisibility(View.GONE);
} else {
Expand Down Expand Up @@ -527,7 +502,6 @@ public void refresh(boolean force) {
enabled = moduleUtil.isModuleEnabled(module.packageName);
fragment.runAsync(() -> {
List<PackageInfo> appList = AppHelper.getAppList(force);
denyList = AppHelper.getDenyList(force);
var tmpRecList = new HashSet<ApplicationWithEquals>();
var tmpChkList = new HashSet<>(ConfigManager.getModuleScope(module.packageName));
final var tmpList = new ArrayList<AppInfo>();
Expand Down Expand Up @@ -599,8 +573,6 @@ protected void onCheckedChange(CompoundButton buttonView, boolean isChecked, App
buttonView.setChecked(!isChecked);
} else if (appInfo.packageName.equals("system")) {
fragment.showHint(R.string.reboot_required, true, R.string.reboot, v -> ConfigManager.reboot());
} else if (denyList.contains(appInfo.packageName)) {
fragment.showHint(activity.getString(R.string.deny_list, appInfo.label), true);
}
checkedList = tmpChkList;
}
Expand Down

This file was deleted.

Loading
Loading