From 1b9e7fae1065508cac7d053bb6c8f8353f82c406 Mon Sep 17 00:00:00 2001 From: liuyang Date: Tue, 13 Nov 2018 21:47:08 +0800 Subject: [PATCH] =?UTF-8?q?APK=E6=8A=93=E5=8C=85>=E4=BB=8E=E9=A2=91?= =?UTF-8?q?=E9=81=931=E5=BC=80=E5=A7=8B=E4=BE=9D=E6=AC=A1=E6=8A=93?= =?UTF-8?q?=E5=8F=96,=20=E4=BF=AE=E5=A4=8D=E6=8A=93=E5=8C=85=E7=AD=89?= =?UTF-8?q?=E5=BE=85=E6=97=B6=E9=97=B4=E5=81=9C=E6=AD=A2=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E6=96=B0=E5=BC=80=E5=A7=8B=E5=90=8E=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E7=9A=84=E4=BB=BB=E5=8A=A1=E4=BB=8D=E5=9C=A8=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E9=97=AE=E9=A2=98=20#BYLSERVER-1693?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/duolebo/blyrobot/MainActivity.kt | 5 +- .../java/com/duolebo/blyrobot/data/Task.kt | 47 ++++++++++++++++++- .../com/duolebo/blyrobot/tools/TaskManager.kt | 7 +++ 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt b/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt index 06be6c9..00f81f4 100644 --- a/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt +++ b/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt @@ -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 { diff --git a/app/src/main/java/com/duolebo/blyrobot/data/Task.kt b/app/src/main/java/com/duolebo/blyrobot/data/Task.kt index 3029724..6cc018d 100644 --- a/app/src/main/java/com/duolebo/blyrobot/data/Task.kt +++ b/app/src/main/java/com/duolebo/blyrobot/data/Task.kt @@ -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) } diff --git a/app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt b/app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt index 5abeeb9..ee1b2ca 100644 --- a/app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt +++ b/app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt @@ -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}") -- 2.21.0