Fix DisplayControl classpath
Use the full system server classpath to load DisplayControl, so that turning the screen off on Android 14+ does not crash on certain devices. Refs #4544 comment <https://github.com/Genymobile/scrcpy/issues/4544#issuecomment-2526999714> Fixes #4544 <https://github.com/Genymobile/scrcpy/issues/4544> Fixes #5274 <https://github.com/Genymobile/scrcpy/issues/5274> Signed-off-by: Romain Vimont <rom@rom1v.com>
This commit is contained in:
parent
a9aadc95df
commit
a507b4f559
@ -6,6 +6,7 @@ import com.genymobile.scrcpy.util.Ln;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.os.IBinder;
|
||||
import android.system.Os;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
@ -21,7 +22,9 @@ public final class DisplayControl {
|
||||
Class<?> classLoaderFactoryClass = Class.forName("com.android.internal.os.ClassLoaderFactory");
|
||||
Method createClassLoaderMethod = classLoaderFactoryClass.getDeclaredMethod("createClassLoader", String.class, String.class, String.class,
|
||||
ClassLoader.class, int.class, boolean.class, String.class);
|
||||
ClassLoader classLoader = (ClassLoader) createClassLoaderMethod.invoke(null, "/system/framework/services.jar", null, null,
|
||||
|
||||
String systemServerClasspath = Os.getenv("SYSTEMSERVERCLASSPATH");
|
||||
ClassLoader classLoader = (ClassLoader) createClassLoaderMethod.invoke(null, systemServerClasspath, null, null,
|
||||
ClassLoader.getSystemClassLoader(), 0, true, null);
|
||||
|
||||
displayControlClass = classLoader.loadClass("com.android.server.display.DisplayControl");
|
||||
|
Loading…
x
Reference in New Issue
Block a user