Commit eaa21e7d authored by liuyang's avatar liuyang

APK抓包>从频道1开始依次抓取

#BYLSERVER-1693
parent 2d2b000c
......@@ -168,9 +168,8 @@ class Task : IAppBaseCallback {
}
AdbUtil.launchApp("${this.apkInfo.packageName}/${this.apkInfo.launcher}")
Thread.sleep(2 * 1000L)
// 启动2s开始抓取,避免第一个频道没有抓到
capture(this.apkInfo.launchDelay + this.apkInfo.captureDelay)
// 启动立即抓取,避免第一个频道没有抓到
capture(this.apkInfo.captureDelay, false)
Thread.sleep(this.apkInfo.launchDelay * 1000L)
// 启动后按键事件模拟
......@@ -182,6 +181,7 @@ class Task : IAppBaseCallback {
private fun processChannels(index:Int): Boolean {
Log.i(TAG, "processChannels")
step()
quitCapture()
for (i in index + 1 until this.apkInfo.channelCount) {
if (this.status == "7")
......@@ -237,7 +237,7 @@ class Task : IAppBaseCallback {
}
// 抓包处理
private fun capture(delay: Int) {
private fun capture(delay: Int, quit: Boolean = true) {
Log.i(TAG, "capture")
val file = File(this.capturePath)
if (file.exists())
......@@ -245,8 +245,15 @@ class Task : IAppBaseCallback {
Thread(Runnable {
proc = AdbUtil.tcpCapture(this.capturePath)
}).start()
Log.i(TAG, "capture sleep $delay seconds")
Thread.sleep(delay * 1000L)
if (quit) {
Log.i(TAG, "capture sleep $delay seconds")
Thread.sleep(delay * 1000L)
quitCapture()
}
}
private fun quitCapture() {
proc?.destroy()
AdbUtil.killTcpdump()
Thread.sleep(2000L)
......
package com.duolebo.blyrobot.util
import android.text.TextUtils
import android.util.Log
import com.duolebo.blyrobot.data.EmulateKey
import java.io.BufferedReader
......@@ -211,7 +212,7 @@ object AdbUtil {
val keyEvents = ArrayList<EmulateKey>()
val keys = keyPath.split(Constants.SLASH)
for (stepKey in keys) {
var delay = "0"
var delay = "1"
var key = stepKey
if (Constants.VERTICAL_BAR in stepKey) {
val params = stepKey.split(Constants.VERTICAL_BAR)
......@@ -221,11 +222,16 @@ object AdbUtil {
if (Constants.ASTERISK in stepKey) {
val params = stepKey.split(Constants.ASTERISK)
for (i in 0..params[1].toInt()) {
val keyEvent = EmulateKey()
keyEvent.key = params[0]
keyEvent.delay = delay
keyEvents.add(keyEvent)
if (params.size > 1 && TextUtils.isDigitsOnly(params[1])) {
for (i in 0..params[1].toInt()) {
val keyEvent = EmulateKey()
keyEvent.key = params[0]
keyEvent.delay = delay
keyEvents.add(keyEvent)
}
}
else {
Log.i(TAG, "multi key event is invalid.")
}
} else {
val keyEvent = EmulateKey()
......@@ -240,7 +246,7 @@ object AdbUtil {
Log.i(TAG, "send key: $keyEvent")
val cmdKey = "input keyevent ${Constants.KEY_MAP[keyEvent.key]}"
commands.add(cmdKey)
if (keyEvent.key.toInt() > 0)
if (keyEvent.delay.toInt() > 0)
commands.add("sleep ${keyEvent.delay}")
}
......@@ -318,23 +324,27 @@ object AdbUtil {
}
fun killTcpdump() {
val result = exeCmdEcho("killall", true)
if (result.status != -1)
exeCmdEcho("killall tcpdump", true)
else {
val psResult = exeCmdEcho("ps | grep tcpdump", true)
for (line in psResult.successLines) {
val arr = line.split(' ')
val items = ArrayList<String>()
arr.forEach {
if (!it.isNullOrEmpty())
items.add(it)
}
if (items.isNotEmpty()) {
exeCmdEcho("kill " + items[1], true)
try {
val result = exeCmdEcho("killall", true)
if (result.status != -1)
exeCmdEcho("killall tcpdump", true)
else {
val psResult = exeCmdEcho("ps | grep tcpdump", true)
for (line in psResult.successLines) {
val arr = line.split(' ')
val items = ArrayList<String>()
arr.forEach {
if (!it.isNullOrEmpty())
items.add(it)
}
if (items.isNotEmpty()) {
exeCmdEcho("kill " + items[1], true)
}
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment