Closed 15767404067 closed 3 months ago
检查操作是否正确,adb端口是否打开,再尝试一下电脑scrcpy能否连接
确实无法连接的可以等2.x版本
测试电脑scrcpy可以连接的,adb端口肯是打开的,因为我电脑连着scrcpy的 局域网连接的不是USB,所以我肯定没搞错
还是不行的话等2.x版本 2.x版本换用最新scrcpy,兼容性好
测试了,不行,我调试时候代码是跑到adb这出现的异常\Easycontrol_For_Car-1.4.1\easycontrol\app\src\main\java\top\eiyooooo\easycontrol\app\adb\Adb.java 38行AdbProtocol.AdbMessage message = AdbProtocol.AdbMessage.parseAdbMessage(channel);
还单独测试了一行adb查询命令,能查询成功,第二条查询命令开始报错
测试了,不行,我调试时候代码是跑到adb这出现的异常\Easycontrol_For_Car-1.4.1\easycontrol\app\src\main\java\top\eiyooooo\easycontrol\app\adb\Adb.java 38行AdbProtocol.AdbMessage message = AdbProtocol.AdbMessage.parseAdbMessage(channel);
https://github.com/eiyooooo/Easycontrol_For_Car/blob/45619989e6a7a279069f38d2e892d9a4c68c2f6d/easycontrol/app/src/main/java/top/eiyooooo/easycontrol/app/adb/AdbProtocol.java#L24
尝试将这里改为
256 * 1024
或 4 * 1024
测试了,不行,我调试时候代码是跑到(同AsianDevelopmentBank)亚洲开发银行这出现的异常\ easy control For Car-1 . 4 . 1 \ easy control \ app \ src \ main \ Java \ top \ eiyooooo \ easy control \ app \ ADB \ ADB . Java 38行ADB协议。AdbMessage消息=协议。ADB message . parseadbmessage(channel);
尝试将这里改为
256 * 1024
或4 * 1024
都测试了,报错提示: [top.eiyooooo.easycontrol.app.client. Client.connectServer(Client.java:178), top.eiyooooo.easycontrol.app.client.C lient.lambda$new$5$top-eiyoooo0- easycontrol-app-client-Client(Client.java:114), top.eiyooooo,easycontrol,app.client.Client$ $ExternalSyntheticLambda11.run(D8$ $SyntheticClass), java.lang.Thread.run(Thread.java)]
还单独测试了一行adb查询命令,能查询成功,第二条查询命令开始报错
是指这里成功?
\Easycontrol_For_Car-1.4.1\easycontrol\app\src\main\java\top\eiyooooo\easycontrol\app\client\Client.java private void startServer(Device device) throws Exception { release("A:"+ adb.runAdbCmd("getprop ro.serialno")); Thread.sleep(3000); release("B:"+ adb.runAdbCmd("getprop ro.serialno")); Thread.sleep(3000); release("C"); if (BuildConfig.ENABLE_DEBUGFEATURE || !adb.runAdbCmd("ls /data/local/tmp/easycontrol").contains(serverName)) { adb.runAdbCmd("rm /data/local/tmp/easycontrol_ "); adb.pushFile(AppData.main.getResources().openRawResource(R.raw.easycontrol_server), serverName); }
上面这几段是我测试的release("A:"+ adb.runAdbCmd("getprop ro.serialno"));提示正常输出,第二条已经没有输出了
好像跟adb无关
跑到这
检查一下被控端/data/local/tmp文件夹下有没有easycontrol_for_car_server_10401.jar
有adb -s xxxxxx shell nobleltehk:/ $ cd /data/local/tmp nobleltehk:/data/local/tmp $ ls ADBKeyboard.apk app-release.apk easycontrol_for_car_server_10401.jar
安卓10+安卓12+安卓13测试没问题
执行adb -s xxxxxx shell app_process -Djava.class.path=/data/local/tmp/easycontrol_for_car_server_10401.jar / top.eiyooooo.easycontrol.server.Server
看看会不会报错或退出,正常来说是没有输出一直在等待的
执行
adb -s xxxxxx shell app_process -Djava.class.path=/data/local/tmp/easycontrol_for_car_server_10401.jar / top.eiyooooo.easycontrol.server.Server
看看会不会报错或退出,正常来说是没有输出一直在等待的
java.lang.NoSuchMethodException: setDisplayId [int] at java.lang.Class.getMethod(Class.java) at java.lang.Class.getMethod(Class.java) at d.e.u(SourceFile:1) at top.eiyooooo.easycontrol.server.Server.h(SourceFile:1) at top.eiyooooo.easycontrol.server.Server.main(SourceFile) at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java)
安卓10+安卓12+安卓13测试没问题
安卓7+安卓9测试都不行
安卓9 adb -s 172.16.1.83:5555 shell app_process -Djava.class.path=/data/local/tmp/easycontrol_for_car_server_10401.jar / top.eiyooooo.easycontrol.server.Server java.lang.NoSuchMethodException: android.view.InputEvent.setDisplayId [int] at java.lang.Class.getMethod(Class.java:2069) at java.lang.Class.getMethod(Class.java:1690) at d.e.u(SourceFile:1) at top.eiyooooo.easycontrol.server.Server.h(SourceFile:1) at top.eiyooooo.easycontrol.server.Server.main(Unknown Source:17) at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:341)
执行
adb -s xxxxxx shell app_process -Djava.class.path=/data/local/tmp/easycontrol_for_car_server_10401.jar / top.eiyooooo.easycontrol.server.Server
看看会不会报错或退出,正常来说是没有输出一直在等待的java.lang.NoSuchMethodException: setDisplayId [int] at java.lang.Class.getMethod(Class.java) at java.lang.Class.getMethod(Class.java) at d.e.u(SourceFile:1) at top.eiyooooo.easycontrol.server.Server.h(SourceFile:1) at top.eiyooooo.easycontrol.server.Server.main(SourceFile) at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java)
这个是安卓7
这里的问题,为了适配应用流转写的,没有考虑到低版本没有这个方法的问题,可以将这里改为
try {
setDisplayIdMethod = InputEvent.class.getMethod("setDisplayId", int.class);
} catch (Exception ignored) {
}
这个你编译一个发我,这个我编译不了
好了投出来了
这里的问题,为了适配应用流转写的,没有考虑到低版本没有这个方法的问题,可以将这里改为
try { setDisplayIdMethod = InputEvent.class.getMethod("setDisplayId", int.class); } catch (Exception ignored) { }
谢谢作者!搞定了
这个你编译一个发我,这个我编译不了
可以fork issue2 分支,然后执行GitHub Actions选择这个分支
嗯,已经编译好了
安卓9的连接不上