解决Android Studio Loading Devices问题

目录

一、解决办法(普通):

二、解决办法的优化

三、解决办法的进一步优化


问题:windows 11 电脑,每次开机,打开Android Studio,都会显示Loading Devices,连接不上设备。

原因:adb的端口被其他进程占用了。

目的:希望Android Studio 能够连接上手机设备。

一、解决办法(普通):

1、打开CMD命令行

2、在命令行中执行如下命令

第一步:找到占用5037端口的进程

netstat -aon|findstr "5037"

第二步:杀掉占用端口的进程

taskkill /pid {进程ID} /f

比如:taskkill /pid 6272 /f

第三步:启动adb

adb start-server

二、解决办法的优化

对【 一、 解决办法(普通)】进行包装,写成.java文件,执行java文件就很快了,提高工作效率。

问题:每天都要执行【 一、 解决办法(普通)】的流程,很耗时

目的:希望能执行一个.java文件,java文件封装了上述命令流程。

java代码如下:

import java.io.*;

/***
 netstat -aon|findstr "5037"
 taskkill /pid 30312 /f
 adb start-server
 */
public class CmdLoadingDevices {
    public static void main(String[] args) {
        try {
            
            ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/c", "netstat -aon|findstr \"5037\"");
            processBuilder.redirectErrorStream(true);
            Process process = processBuilder.start();

            
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "GBK")); 
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println("PJ11 :"+line);
                if(line.contains(":5037")){
                    String[]arr =  line.split(" ");
                    int length = arr.length;
                    System.out.println("PJ22 :"+arr[length-1]);
                    
                    String processIdOfOccupyPort = arr[length-1];
                    String cmdKill = "taskkill /pid "+processIdOfOccupyPort+" /f";
                    ProcessBuilder processBuilderKill = new ProcessBuilder("cmd.exe", "/c", cmdKill);
                    processBuilderKill.redirectErrorStream(true);
                    Process processKill = processBuilderKill.start();
                    processKill.waitFor();

                    String cmdStartServer = "adb start-server";
                    ProcessBuilder processBuilderStartServer = new ProcessBuilder("cmd.exe", "/c", cmdStartServer);
                    processBuilderStartServer.redirectErrorStream(true); 
                    Process processStartServer = processBuilderStartServer.start();
                    int exitCode = processStartServer.waitFor();
                    if (exitCode != 0){
                        System.out.println("PJ22 :错误");
                    } else {
                        System.out.println("完成");
                    }
                    break;
                }
            }

     
            process.waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

使用:

1、将上述CmdLoadingDevices.java 文件编译成CmdLoadingDevices.class文件。

javac -encoding UTF-8 D:\PJ\Private\javaJar\CmdLoadingDevices.java

2、执行文件

java CmdLoadingDevices

3、执行完成,Android Studio连接上了设备,OK。

4、整体使用命令行

5、完成。

三、解决办法的进一步优化

对【 二、 解决办法的优化】的包装,打成jar包,执行jar包就更快了,提高工作效率。

使用说明:

1、执行java -jar CmdLoadingDevices.jar

2、若是命令行输出:错误,则需要重新执行底1步;

若是命令行输出:完成,则OK。

具体生成jar包的步骤如下:

1、编译java文件

javac -encoding UTF-8 D:\PJ\Private\javaJar\CmdLoadingDevices.java

2、执行

jar -cvf CmdLoadingDevices.jar CmdLoadingDevices.class

3、执行java -jar CmdLoadingDevices.jar ,报错:没有主清单属性

a、重命名,将CmdLoadingDevices.jar重命名为CmdLoadingDevices.zip

b、解压CmdLoadingDevices.zip为CmdLoadingDevices文件夹

c、打开CmdLoadingDevices文件夹,用记事本打开文件MANIFEST.MF

d、在文件MANIFEST.MF中添加

Main-Class: CmdLoadingDevices

整个文件内容如下:

Manifest-Version: 1.0
Created-By: 11.0.19 (Amazon.com Inc.)
Main-Class: CmdLoadingDevices

对文件MANIFEST.MF的修改点:

在第三行的位置写入 Main-Class: CmdLoadingDevices (注意冒号后面有一个空格,整个文件最后有一行空行),保存。

4、将CmdLoadingDevices文件夹重新打成zip压缩包(CmdLoadingDevices.zip)

5、重命名,将CmdLoadingDevices.zip重命名为CmdLoadingDevices.jar

6、执行java -jar CmdLoadingDevices.jar

7、若是命令行输出:错误,则需要重新执行底6步;

若是命令行输出:完成,则OK。

8、完成。

附件(页面顶部的资源下载):jar包Jar包链接

相关推荐

  1. Edge问题解决教程

    2024-04-08 11:00:07       40 阅读
  2. 问题解决记录-pypcd

    2024-04-08 11:00:07       37 阅读
  3. 问题解决方案

    2024-04-08 11:00:07       38 阅读
  4. 20240208问题解决

    2024-04-08 11:00:07       31 阅读
  5. 解决toFixed精度问题

    2024-04-08 11:00:07       27 阅读
  6. 解决跨域问题

    2024-04-08 11:00:07       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 11:00:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 11:00:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 11:00:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 11:00:07       20 阅读

热门阅读

  1. 自动化脚本代码appium+pytest+adb

    2024-04-08 11:00:07       21 阅读
  2. 【flask快速上手(二)】

    2024-04-08 11:00:07       20 阅读
  3. Windows DLL(动态链接库)的用处

    2024-04-08 11:00:07       19 阅读
  4. Spring Boot中整合Redis

    2024-04-08 11:00:07       17 阅读
  5. C#实践作业1(类、接口、委托)

    2024-04-08 11:00:07       11 阅读
  6. 动态规划算法 - LC354. 俄罗斯套娃信封问题

    2024-04-08 11:00:07       12 阅读
  7. Linux常用命令

    2024-04-08 11:00:07       12 阅读
  8. Scrapy数据存储到数据库

    2024-04-08 11:00:07       12 阅读