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 cf2a80e686ecfbbf2afde6baae9222aef634a6e9..d8158ee195ae88040e7f40f8a93ed104e13838d7 100644 --- a/app/src/main/java/com/duolebo/blyrobot/data/Task.kt +++ b/app/src/main/java/com/duolebo/blyrobot/data/Task.kt @@ -1,6 +1,7 @@ package com.duolebo.blyrobot.data import android.content.Context +import android.os.Environment import android.util.Log import com.duolebo.appbase.AppBaseHandler import com.duolebo.appbase.IAppBaseCallback @@ -23,8 +24,11 @@ class Task : IAppBaseCallback { private val TAG = "Task" lateinit var apkInfo: ApkInfo - //截图存放路径 + // 截图存放路径 private lateinit var imagePath: String + // 抓包存放路径 + private var capturePath = Environment + .getExternalStorageDirectory().absolutePath + "/capture.txt" private var channelIndex = 0 @@ -43,11 +47,13 @@ class Task : IAppBaseCallback { } fun from(apkInfo: ApkInfo) { - this.imagePath = this.context.cacheDir.absolutePath + "/" + apkInfo.packageName + this.apkInfo = apkInfo +// this.imagePath = this.context.cacheDir.absolutePath + "/" + apkInfo.packageName + this.imagePath = Environment + .getExternalStorageDirectory().absolutePath + "/" + apkInfo.packageName val dir = File(this.imagePath) if (!dir.exists()) dir.mkdirs() - } fun start() { @@ -100,8 +106,11 @@ class Task : IAppBaseCallback { // 抓包处理 private fun capture() { Log.i(TAG, "capture") + val file = File(this.capturePath) + if (file.exists()) + file.delete() Thread(Runnable { - proc = AdbUtil.tcpCapture("") + proc = AdbUtil.tcpCapture(this.capturePath) }).start() Log.i(TAG, "capture sleep ${this.apkInfo.captureDelay} seconds") Thread.sleep(this.apkInfo.captureDelay * 1000L) @@ -113,7 +122,8 @@ class Task : IAppBaseCallback { // 分析http抓包文件 private fun analysisCapture(): ArrayList { val playUrlItems = ArrayList() - val file = File("/sdcard/capture.txt") + val file = File(Environment + .getExternalStorageDirectory().absolutePath + "/capture.txt") val lines = file.readLines() var partUrl = "" @@ -189,7 +199,7 @@ class Task : IAppBaseCallback { // 截图处理,转成jpg private fun screenShot(absName : String) { - val pngPath = "/$absName.png" + val pngPath = "$absName.png" val jpgPath = pngPath.replace(".png", ".jpg") AdbUtil.screenShot(pngPath) // png转换成jpg diff --git a/app/src/main/java/com/duolebo/blyrobot/protocol/ApkReportProtocol.kt b/app/src/main/java/com/duolebo/blyrobot/protocol/ApkReportProtocol.kt index 844798864fc420b6f076c9405922d3fa18cce769..ccb21b57e0d5c3d97a5e54733f14f7c485cb2a53 100644 --- a/app/src/main/java/com/duolebo/blyrobot/protocol/ApkReportProtocol.kt +++ b/app/src/main/java/com/duolebo/blyrobot/protocol/ApkReportProtocol.kt @@ -5,6 +5,7 @@ import com.duolebo.appbase.IModel import com.duolebo.appbase.prj.bmtv.protocol.IProtocolConfig import com.duolebo.appbase.prj.bmtv.protocol.ProtocolBase import com.duolebo.blyrobot.data.ApkReportData +import com.duolebo.blyrobot.util.Config class ApkReportProtocol(context: Context?, config: IProtocolConfig?) : ProtocolBase(context, config) { @@ -19,7 +20,7 @@ class ApkReportProtocol(context: Context?, config: IProtocolConfig?) : ProtocolB } override fun prepareProtocolRequestKey(): String { - return "http://test.duolebo.com/staging/apkReport/report.do" + return Config.instance.getReportProtocolUrl() } } \ No newline at end of file diff --git a/app/src/main/java/com/duolebo/blyrobot/protocol/GetAppInfoProtocol.kt b/app/src/main/java/com/duolebo/blyrobot/protocol/GetAppInfoProtocol.kt index 5813025cc62e85882f579646ee6c19052fbd8d70..2b47b3fe060b9882f4ec52efb1ac854645575165 100644 --- a/app/src/main/java/com/duolebo/blyrobot/protocol/GetAppInfoProtocol.kt +++ b/app/src/main/java/com/duolebo/blyrobot/protocol/GetAppInfoProtocol.kt @@ -21,8 +21,4 @@ class GetAppInfoProtocol(context: Context?, config: IProtocolConfig?) : Protocol return "" } - override fun prepareHttpRequestUrl(): String { - return "http://test.duolebo.com/staging/apkInfo/query.do" - } - } \ No newline at end of file diff --git a/app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt b/app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt index b4b09f3795964598fb7aba025042172246a4f64b..3e05dc50ac13c9366a3de91079bf076429b1faca 100644 --- a/app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt +++ b/app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt @@ -9,6 +9,7 @@ import android.content.IntentFilter import android.os.IBinder import android.support.v4.content.LocalBroadcastManager import android.util.Log +import com.duolebo.blyrobot.data.ApkInfo import com.duolebo.blyrobot.data.Task import com.duolebo.blyrobot.tools.TaskManager import com.duolebo.blyrobot.util.AdbUtil @@ -65,7 +66,10 @@ class BylRobotService: Service() { private fun loadTask() { Log.i(TAG, "loadTask...") val task = Task(this) - task.from(JSONObject(AppUtil.readFromAssert(this, "test.json"))) + val apkInfo = ApkInfo() + val apkJson = JSONObject(AppUtil.readFromAssert(this, "test.json")) + apkInfo.from(apkJson) + task.from(apkInfo) TaskManager.instance.add(task) TaskManager.instance.start() } 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 21ed06bae20be8f443ccb737f85e006c2e8f3ca1..4cf8bc30717f0f29c9cbc9c3bdbd79da7e26e7f9 100644 --- a/app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt +++ b/app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt @@ -19,7 +19,7 @@ class TaskManager { fun add(task: Task) { task.taskListener = object : Task.OnTaskListener { - override fun onComplete() { + override fun onComplete(result: Boolean) { remove(task) } } @@ -28,7 +28,7 @@ class TaskManager { fun remove(task: Task) { val item = tasks.find { - it.packageName == task.packageName + it.apkInfo.packageName == task.apkInfo.packageName } item?.run { @@ -38,7 +38,7 @@ class TaskManager { fun isExist(task: Task): Boolean { val item = tasks.find { - it.packageName == task.packageName + it.apkInfo.packageName == task.apkInfo.packageName } return item != null diff --git a/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt b/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt index 08f0d8668f66b87aa71d764ec6c1fe900368030b..9a73cea546da6568652babd0b2ec389eab7bed98 100644 --- a/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt +++ b/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt @@ -202,8 +202,8 @@ object AdbUtil { exeCmdEcho(commands, true) } - fun tcpCapture(tcpdump: String): Process? { - val captureCmd = "tcpdump -p -vv -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'" // >> /sdcard/capture.txt\n" + fun tcpCapture(path: String): Process? { + val captureCmd = "tcpdump -p -vv -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' >> $path" val proc = getRootShell() var dos: DataOutputStream? = null diff --git a/app/src/main/java/com/duolebo/blyrobot/util/Config.kt b/app/src/main/java/com/duolebo/blyrobot/util/Config.kt index 4e9375694fe79d6e814c9c60c755f2f519c5efef..a65319f3ef5163f709e107e8adfc9950f500d2e5 100644 --- a/app/src/main/java/com/duolebo/blyrobot/util/Config.kt +++ b/app/src/main/java/com/duolebo/blyrobot/util/Config.kt @@ -3,8 +3,12 @@ package com.duolebo.blyrobot.util import com.duolebo.appbase.prj.bmtv.protocol.IProtocolConfig class Config: IProtocolConfig { + private val isDebug = false + override fun getProtocolUrl(): String { - return "" + if (isDebug) + return "http://192.168.2.42:8080/manage/apkInfo/query.do" + return "http://test.duolebo.com/staging/apkInfo/query.do" } override fun getTvid(): String { @@ -15,6 +19,12 @@ class Config: IProtocolConfig { return "" } + fun getReportProtocolUrl(): String { + if (isDebug) + return "http://192.168.2.42:8080/manage/apkInfo/report.do" + return "http://test.duolebo.com/staging/apkReport/report.do" + } + companion object { val instance = Config() }