Commit 1b9e7fae authored by liuyang's avatar liuyang

APK抓包>从频道1开始依次抓取, 修复抓包等待时间停止任务,重新开始后之前的任务仍在执行问题

#BYLSERVER-1693
parent 95d297ad
......@@ -89,7 +89,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
private fun start() {
startBtn.isEnabled = false
startBtn.isFocusable = false
stopBtn.isEnabled = true
stopBtn.isFocusable = true
if (TaskManager.instance.tasks.size > 0) {
startRobot()
}
......@@ -102,7 +104,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
private fun stop() {
stopRobot()
stopBtn.isEnabled = false
stopBtn.isFocusable = false
startBtn.isEnabled = true
startBtn.isFocusable = true
}
private fun resetStartBtn() {
......@@ -196,7 +200,6 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
if (TaskManager.instance.tasks.size > 0) {
startRobot()
startSet = false
startBtn.text = "停止"
refreshBtn.isEnabled = false
}
else {
......
......@@ -20,7 +20,9 @@ import java.text.SimpleDateFormat
import java.util.*
import kotlin.collections.ArrayList
/**
* 任务类
*/
class Task : Thread, IAppBaseCallback {
enum class State {
......@@ -61,6 +63,9 @@ class Task : Thread, IAppBaseCallback {
return true
}
/**
* 从apk配置生成信息
*/
fun from(apkInfo: ApkInfo) {
this.apkInfo = apkInfo
// this.imagePath = this.context.cacheDir.absolutePath + "/" + apkInfo.packageName
......@@ -85,6 +90,9 @@ class Task : Thread, IAppBaseCallback {
execute()
}
/**
* 执行任务
*/
private fun execute() {
//如果之前的上传任务还在执行,进行取消
if (!uploadId.isNullOrEmpty()) {
......@@ -130,6 +138,9 @@ class Task : Thread, IAppBaseCallback {
report()
}
/**
* 重置状态
*/
fun reset() {
this.status = State.IDLE
this.channelIndex = 0
......@@ -165,6 +176,9 @@ class Task : Thread, IAppBaseCallback {
}
}
/**
* 启动app
*/
private fun launchApp(reset: Boolean = false) {
Log.i(TAG, "launchApp")
if (reset) {
......@@ -186,6 +200,10 @@ class Task : Thread, IAppBaseCallback {
}
}
/**
* 频道轮询
* @param index 频道序号
*/
private fun processChannels(index: Int): Boolean {
Log.i(TAG, "processChannels")
step()
......@@ -200,7 +218,7 @@ class Task : Thread, IAppBaseCallback {
AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent)
if (!AppUtil.isAppForeground(context, this.apkInfo.packageName)) {
Log.i(TAG, "targe app crashed?")
Log.i(TAG, "target app crashed?")
return false
}
......@@ -210,6 +228,10 @@ class Task : Thread, IAppBaseCallback {
return true
}
/**
* 单个频道处理
* 分析抓包数据+屏幕截图
*/
private fun step() {
Log.i(TAG, "step channel ${this.channelIndex}")
......@@ -261,6 +283,9 @@ class Task : Thread, IAppBaseCallback {
}
}
/**
* 退出抓包
*/
private fun quitCapture() {
proc?.destroy()
AdbUtil.killTcpdump()
......@@ -365,12 +390,16 @@ class Task : Thread, IAppBaseCallback {
Log.i(TAG, "upload errorCount: $errorCount")
}
/**
* ftp 上传回调监听
*/
private fun uploadImageCallback(): UploadStatusDelegate {
val totalUpload = this.uploadImages.size
Log.i(TAG, "total upload count : $totalUpload")
return object : UploadStatusDelegate {
override fun onCancelled(context: Context?, uploadInfo: UploadInfo?) {
}
override fun onProgress(context: Context?, uploadInfo: UploadInfo?) {
......@@ -389,6 +418,7 @@ class Task : Thread, IAppBaseCallback {
}
}
//通过ftp上传图片到服务器
private fun uploadImage() {
try {
......@@ -415,7 +445,11 @@ class Task : Thread, IAppBaseCallback {
}
}
/**
* 先上报数据,截图上传继续在后台进行
*/
private fun report() {
Log.i(TAG, "report....")
val postJson = JSONObject()
val reportArray = JSONArray()
reportArray.put(this.reportJson)
......@@ -424,23 +458,32 @@ class Task : Thread, IAppBaseCallback {
}
override fun onProtocolFailed(p0: IProtocol?) {
Log.i(TAG, "onProtocolFailed....")
this.status = State.REPORT_FAILED
finish(false)
}
override fun onHttpFailed(p0: IProtocol?) {
Log.i(TAG, "onHttpFailed....")
this.status = State.REPORT_FAILED
finish(false)
}
override fun onProtocolSucceed(p0: IProtocol?) {
Log.i(TAG, "onProtocolSucceed....")
this.status = State.COMPLETE
finish(true)
}
var taskListener: OnTaskListener? = null
/**
* 任务状态
*/
interface OnTaskListener {
/**
* @param result true 成功完成
*/
fun onComplete(result: Boolean)
}
......
......@@ -5,6 +5,9 @@ import com.duolebo.blyrobot.data.Task
import java.util.*
import kotlin.collections.ArrayList
/**
* 任务管理类
*/
class TaskManager {
companion object {
......@@ -20,6 +23,10 @@ class TaskManager {
private var currentTask: Task? = null
private var scheduleTime: Timer? = null
/**
* 添加任务
* @param task
*/
fun add(task: Task) {
for (existTask in tasks) {
Log.i(TAG, "exist task app: ${existTask.apkInfo.packageName}")
......
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