[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() {
List<String> list = new ArrayList<>();
try {

View File

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

View File

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

View File

@ -5,7 +5,7 @@ import org.lsposed.lspd.service.ILSPApplicationService;
interface ILSPosedService {
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);
}

View File

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

View File

@ -98,6 +98,8 @@ public class ConfigManager {
private boolean sepolicyLoaded = true;
private String api = "(???)";
static class ProcessScope {
final String processName;
final int uid;
@ -942,4 +944,12 @@ public class ConfigManager {
}
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;
}
@Override
public String getApi() {
return ConfigManager.getInstance().getApi();
}
@Override
public ParceledListSlice<PackageInfo> getInstalledPackagesFromAllUsers(int flags, boolean filterNoProcess) throws RemoteException {
return PackageService.getInstalledPackagesFromAllUsers(flags, filterNoProcess);

View File

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

View File

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