agent退出打印系统日志
parent
2633f64fa9
commit
9d528d2229
|
@ -27,11 +27,11 @@ import java.util.*;
|
||||||
*/
|
*/
|
||||||
public class AndroidDeviceInitThread extends Thread {
|
public class AndroidDeviceInitThread extends Thread {
|
||||||
|
|
||||||
private Logger logger = LoggerFactory.getLogger(AndroidDeviceInitThread.class);
|
private final Logger logger = LoggerFactory.getLogger(AndroidDeviceInitThread.class);
|
||||||
|
|
||||||
private AdbDevice adbDevice;
|
private final AdbDevice adbDevice;
|
||||||
|
|
||||||
private Adb adb;
|
private final Adb adb;
|
||||||
|
|
||||||
private AdbTransport transport;
|
private AdbTransport transport;
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public class AndroidDeviceInitThread extends Thread {
|
||||||
|
|
||||||
private boolean agentStatus = false;
|
private boolean agentStatus = false;
|
||||||
|
|
||||||
private Object lock = new Object();
|
private final Object lock = new Object();
|
||||||
|
|
||||||
private final String AGENT_START_SHELL = "export CLASSPATH=/data/local/tmp/agent.apk;app_process /system/bin net.northking.product.cctpplus.Agent";
|
private final String AGENT_START_SHELL = "export CLASSPATH=/data/local/tmp/agent.apk;app_process /system/bin net.northking.product.cctpplus.Agent";
|
||||||
|
|
||||||
|
@ -81,7 +81,6 @@ public class AndroidDeviceInitThread extends Thread {
|
||||||
if (agentStatus) {
|
if (agentStatus) {
|
||||||
try {
|
try {
|
||||||
deviceInfo = getDeviceInfo();
|
deviceInfo = getDeviceInfo();
|
||||||
if (null != deviceInfo) {
|
|
||||||
logger.info("设备【{}】agent启动成功,注册设备到服务端,并开始监听设备的屏幕和wifi。。。。。。。。。。。。", adbDevice.getSerial());
|
logger.info("设备【{}】agent启动成功,注册设备到服务端,并开始监听设备的屏幕和wifi。。。。。。。。。。。。", adbDevice.getSerial());
|
||||||
//注册设备
|
//注册设备
|
||||||
AndroidDeviceManager.getInstance().registerDeviceToDeviceManager(deviceInfo);
|
AndroidDeviceManager.getInstance().registerDeviceToDeviceManager(deviceInfo);
|
||||||
|
@ -91,7 +90,6 @@ public class AndroidDeviceInitThread extends Thread {
|
||||||
AndroidDeviceManager.getInstance().publishDeviceAgentAlready(adbDevice.getSerial());
|
AndroidDeviceManager.getInstance().publishDeviceAgentAlready(adbDevice.getSerial());
|
||||||
//开启监听设备的变化
|
//开启监听设备的变化
|
||||||
startWatchDeviceChange();
|
startWatchDeviceChange();
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.warn("读取手机信息失败,请观察手机是否接上上位机", e);
|
logger.warn("读取手机信息失败,请观察手机是否接上上位机", e);
|
||||||
}
|
}
|
||||||
|
@ -514,9 +512,11 @@ public class AndroidDeviceInitThread extends Thread {
|
||||||
String line;
|
String line;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
while ((line = reader.readLine()) != null) {
|
while ((line = reader.readLine()) != null) {
|
||||||
|
if (writer != null) {
|
||||||
writer.write(line);
|
writer.write(line);
|
||||||
writer.newLine();
|
writer.newLine();
|
||||||
writer.flush();
|
writer.flush();
|
||||||
|
}
|
||||||
if ("SERVICE_APK_INSTALLED".equals(line)) {
|
if ("SERVICE_APK_INSTALLED".equals(line)) {
|
||||||
logger.info("设备【{}】cctp程序安装成功。。。。。。", adbDevice.getSerial());
|
logger.info("设备【{}】cctp程序安装成功。。。。。。", adbDevice.getSerial());
|
||||||
n++;
|
n++;
|
||||||
|
@ -576,6 +576,26 @@ public class AndroidDeviceInitThread extends Thread {
|
||||||
logger.warn("设备【{}】的agent被G掉了。。。。。。。。", adbDevice.getSerial(), e);
|
logger.warn("设备【{}】的agent被G掉了。。。。。。。。", adbDevice.getSerial(), e);
|
||||||
agentStatus = false;
|
agentStatus = false;
|
||||||
} finally {
|
} finally {
|
||||||
|
//通常Agent退出都为意外情况
|
||||||
|
if (writer!=null){
|
||||||
|
adb.refreshState(adbDevice);
|
||||||
|
try (AdbTransport logcatTransport = adb.shell(adbDevice, "logcat -d")) {
|
||||||
|
if (logcatTransport!=null){
|
||||||
|
writer.write("\nAgent退出,以下为转储logcat日志\n");
|
||||||
|
BufferedReader logcatReader = new BufferedReader(new InputStreamReader(logcatTransport.getInputStream()));
|
||||||
|
String logcatLine;
|
||||||
|
while ((logcatLine = logcatReader.readLine()) != null) {
|
||||||
|
writer.write(logcatLine);
|
||||||
|
writer.newLine();
|
||||||
|
}
|
||||||
|
writer.write("以上为转储logcat日志\n");
|
||||||
|
writer.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
if (null != reader) {
|
if (null != reader) {
|
||||||
try {
|
try {
|
||||||
reader.close();
|
reader.close();
|
||||||
|
|
|
@ -142,6 +142,30 @@ public class Adb {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新设备状态<br>
|
||||||
|
* 设备可能会处于枚举状态外完全不可用的状态,根据方法返回值判断
|
||||||
|
*
|
||||||
|
* @param adbDevice 需要刷新的设备
|
||||||
|
* @return 此设备是否还可用
|
||||||
|
*/
|
||||||
|
public boolean refreshState(AdbDevice adbDevice) {
|
||||||
|
try (AdbTransport transport = createTransport()){
|
||||||
|
transport.send("host-serial:" + adbDevice.getSerial() + ":get-state");
|
||||||
|
transport.verifyResponse();
|
||||||
|
String state = transport.readString();
|
||||||
|
adbDevice.updateStateByText(state);
|
||||||
|
return true;
|
||||||
|
} catch (IOException ioException) {
|
||||||
|
log.error("尝试刷新[" + adbDevice.getProduct() + "(" + adbDevice.getSerial() + ")]时发生传输接口错误", ioException);
|
||||||
|
return false;
|
||||||
|
} catch (TransportException transportException) {
|
||||||
|
log.error("尝试刷新[" + adbDevice.getProduct() + "(" + adbDevice.getSerial() + ")]时发生传输协议错误", transportException);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在设备上运行shell或开启shell会话<br>
|
* 在设备上运行shell或开启shell会话<br>
|
||||||
|
|
Loading…
Reference in New Issue