[core] Show Riru or Zygisk based (#1311)

This commit is contained in:
LoveSy 2021-10-19 00:18:37 +08:00 committed by GitHub
parent 9995fcbeb5
commit 5eac73de77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 35 additions and 5 deletions

View File

@ -342,6 +342,15 @@ public class ConfigManager {
} }
} }
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() { public static List<String> getDenyListPackages() {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
try { try {

View File

@ -134,8 +134,8 @@ public class HomeFragment extends BaseFragment {
private void updateStates(Activity activity, boolean binderAlive, boolean needUpdate) { private void updateStates(Activity activity, boolean binderAlive, boolean needUpdate) {
int cardBackgroundColor; int cardBackgroundColor;
if (binderAlive) { if (binderAlive) {
StringBuilder sb = new StringBuilder(String.format(Locale.ROOT, "%s (%d)", StringBuilder sb = new StringBuilder(String.format(Locale.ROOT, "%s (%d) - %s",
ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode())); ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode(), ConfigManager.getApi()));
if (needUpdate) { if (needUpdate) {
cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), R.attr.colorInstall); cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), R.attr.colorInstall);
binding.statusTitle.setText(R.string.need_update); binding.statusTitle.setText(R.string.need_update);

View File

@ -140,6 +140,7 @@ android {
arguments += "API=${name.toLowerCase()}" arguments += "API=${name.toLowerCase()}"
} }
} }
buildConfigField("String", "API", """"$name"""")
} }
create("Riru") { create("Riru") {

View File

@ -5,7 +5,7 @@ import org.lsposed.lspd.service.ILSPApplicationService;
interface ILSPosedService { interface ILSPosedService {
ILSPApplicationService requestApplicationService(int uid, int pid, String processName, IBinder heartBeat); ILSPApplicationService requestApplicationService(int uid, int pid, String processName, IBinder heartBeat);
oneway void dispatchSystemServerContext(in IBinder activityThread, in IBinder activityToken); oneway void dispatchSystemServerContext(in IBinder activityThread, in IBinder activityToken, String api);
boolean preStartManager(String pkgName, in Intent intent); boolean preStartManager(String pkgName, in Intent intent);
} }

View File

@ -41,6 +41,8 @@ import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import org.lsposed.lspd.BuildConfig;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Map; import java.util.Map;
@ -222,7 +224,7 @@ public class BridgeService {
try { try {
IApplicationThread at = ActivityThread.currentActivityThread().getApplicationThread(); IApplicationThread at = ActivityThread.currentActivityThread().getApplicationThread();
Context ctx = ActivityThread.currentActivityThread().getSystemContext(); Context ctx = ActivityThread.currentActivityThread().getSystemContext();
service.dispatchSystemServerContext(at.asBinder(), Context_getActivityToken(ctx)); service.dispatchSystemServerContext(at.asBinder(), Context_getActivityToken(ctx), BuildConfig.API);
} catch (Throwable e) { } catch (Throwable e) {
Log.e(TAG, "dispatch context: ", e); Log.e(TAG, "dispatch context: ", e);
} }

View File

@ -98,6 +98,8 @@ public class ConfigManager {
private boolean sepolicyLoaded = true; private boolean sepolicyLoaded = true;
private String api = "(???)";
static class ProcessScope { static class ProcessScope {
final String processName; final String processName;
final int uid; final int uid;
@ -942,4 +944,12 @@ public class ConfigManager {
} }
return result; return result;
} }
public void setApi(String api) {
this.api = api;
}
public String getApi() {
return api;
}
} }

View File

@ -511,6 +511,11 @@ public class LSPManagerService extends ILSPManagerService.Stub {
return BuildConfig.VERSION_NAME; return BuildConfig.VERSION_NAME;
} }
@Override
public String getApi() {
return ConfigManager.getInstance().getApi();
}
@Override @Override
public ParceledListSlice<PackageInfo> getInstalledPackagesFromAllUsers(int flags, boolean filterNoProcess) throws RemoteException { public ParceledListSlice<PackageInfo> getInstalledPackagesFromAllUsers(int flags, boolean filterNoProcess) throws RemoteException {
return PackageService.getInstalledPackagesFromAllUsers(flags, filterNoProcess); return PackageService.getInstalledPackagesFromAllUsers(flags, filterNoProcess);

View File

@ -300,8 +300,9 @@ public class LSPosedService extends ILSPosedService.Stub {
} }
@Override @Override
public void dispatchSystemServerContext(IBinder activityThread, IBinder activityToken) { public void dispatchSystemServerContext(IBinder activityThread, IBinder activityToken, String api) {
Log.d(TAG, "received system context"); Log.d(TAG, "received system context");
ConfigManager.getInstance().setApi(api);
ActivityManagerService.onSystemServerContext(IApplicationThread.Stub.asInterface(activityThread), activityToken); ActivityManagerService.onSystemServerContext(IApplicationThread.Stub.asInterface(activityThread), activityToken);
registerPackageReceiver(); registerPackageReceiver();
registerUnlockReceiver(); registerUnlockReceiver();

View File

@ -6,6 +6,8 @@ import org.lsposed.lspd.models.Application;
interface ILSPManagerService { interface ILSPManagerService {
String getApi() = 1;
ParceledListSlice<PackageInfo> getInstalledPackagesFromAllUsers(int flags, boolean filterNoProcess) = 2; ParceledListSlice<PackageInfo> getInstalledPackagesFromAllUsers(int flags, boolean filterNoProcess) = 2;
String[] enabledModules() = 3; String[] enabledModules() = 3;