eiyooooo / Easycontrol_For_Car

易控车机版,帮助您方便地使用安卓车机控制手机。
GNU General Public License v3.0
157 stars 59 forks source link

安卓9的连接不上 #2

Closed 15767404067 closed 3 months ago

15767404067 commented 4 months ago

安卓9的连接不上

eiyooooo commented 4 months ago

检查操作是否正确,adb端口是否打开,再尝试一下电脑scrcpy能否连接

确实无法连接的可以等2.x版本

15767404067 commented 4 months ago

测试电脑scrcpy可以连接的,adb端口肯是打开的,因为我电脑连着scrcpy的 局域网连接的不是USB,所以我肯定没搞错

eiyooooo commented 4 months ago

下载这个V1.4.1试试

还是不行的话等2.x版本 2.x版本换用最新scrcpy,兼容性好

15767404067 commented 4 months ago

421 测试了,不行,我调试时候代码是跑到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);

15767404067 commented 4 months ago

还单独测试了一行adb查询命令,能查询成功,第二条查询命令开始报错

eiyooooo commented 4 months ago

测试了,不行,我调试时候代码是跑到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 * 10244 * 1024

15767404067 commented 4 months ago

测试了,不行,我调试时候代码是跑到(同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);

https://github.com/eiyooooo/Easycontrol_For_Car/blob/45619989e6a7a279069f38d2e892d9a4c68c2f6d/easycontrol/app/src/main/java/top/eiyooooo/easycontrol/app/adb/AdbProtocol.java#L24

尝试将这里改为 256 * 10244 * 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)]

eiyooooo commented 4 months ago

还单独测试了一行adb查询命令,能查询成功,第二条查询命令开始报错

是指这里成功?https://github.com/eiyooooo/Easycontrol_For_Car/blob/45619989e6a7a279069f38d2e892d9a4c68c2f6d/easycontrol/app/src/main/java/top/eiyooooo/easycontrol/app/adb/Adb.java#L37

15767404067 commented 4 months ago

还单独测试了一行adb查询命令,能查询成功,第二条查询命令开始报错

是指这里成功?

https://github.com/eiyooooo/Easycontrol_For_Car/blob/45619989e6a7a279069f38d2e892d9a4c68c2f6d/easycontrol/app/src/main/java/top/eiyooooo/easycontrol/app/adb/Adb.java#L37

\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"));提示正常输出,第二条已经没有输出了
15767404067 commented 4 months ago

好像跟adb无关

15767404067 commented 4 months ago

https://github.com/eiyooooo/Easycontrol_For_Car/blob/45619989e6a7a279069f38d2e892d9a4c68c2f6d/easycontrol/app/src/main/java/top/eiyooooo/easycontrol/app/client/Client.java#L178 跑到这

eiyooooo commented 4 months ago

https://github.com/eiyooooo/Easycontrol_For_Car/blob/45619989e6a7a279069f38d2e892d9a4c68c2f6d/easycontrol/app/src/main/java/top/eiyooooo/easycontrol/app/client/Client.java#L178

跑到这

检查一下被控端/data/local/tmp文件夹下有没有easycontrol_for_car_server_10401.jar

15767404067 commented 4 months ago

有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

15767404067 commented 4 months ago

安卓10+安卓12+安卓13测试没问题

eiyooooo commented 4 months ago

执行adb -s xxxxxx shell app_process -Djava.class.path=/data/local/tmp/easycontrol_for_car_server_10401.jar / top.eiyooooo.easycontrol.server.Server

看看会不会报错或退出,正常来说是没有输出一直在等待的

15767404067 commented 4 months ago

执行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)

15767404067 commented 4 months ago

安卓10+安卓12+安卓13测试没问题

安卓7+安卓9测试都不行

15767404067 commented 4 months ago

安卓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)

15767404067 commented 4 months ago

执行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

eiyooooo commented 4 months ago

https://github.com/eiyooooo/Easycontrol_For_Car/blob/45619989e6a7a279069f38d2e892d9a4c68c2f6d/easycontrol/server/src/main/java/top/eiyooooo/easycontrol/server/wrappers/InputManager.java#L22

这里的问题,为了适配应用流转写的,没有考虑到低版本没有这个方法的问题,可以将这里改为

    try {
        setDisplayIdMethod = InputEvent.class.getMethod("setDisplayId", int.class);
    } catch (Exception ignored) {
    }
15767404067 commented 4 months ago

这个你编译一个发我,这个我编译不了

15767404067 commented 4 months ago

好了投出来了

15767404067 commented 4 months ago

https://github.com/eiyooooo/Easycontrol_For_Car/blob/45619989e6a7a279069f38d2e892d9a4c68c2f6d/easycontrol/server/src/main/java/top/eiyooooo/easycontrol/server/wrappers/InputManager.java#L22

这里的问题,为了适配应用流转写的,没有考虑到低版本没有这个方法的问题,可以将这里改为

    try {
        setDisplayIdMethod = InputEvent.class.getMethod("setDisplayId", int.class);
    } catch (Exception ignored) {
    }

谢谢作者!搞定了

eiyooooo commented 4 months ago

这个你编译一个发我,这个我编译不了

可以fork issue2 分支,然后执行GitHub Actions选择这个分支

15767404067 commented 4 months ago

这个你编译一个发我,这个我编译不了

可以fork issue2 分支,然后执行GitHub Actions选择这个分支

嗯,已经编译好了