Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
BYLAppRobot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liuyang
BYLAppRobot
Commits
1b9e7fae
Commit
1b9e7fae
authored
Nov 13, 2018
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
APK抓包>从频道1开始依次抓取, 修复抓包等待时间停止任务,重新开始后之前的任务仍在执行问题
#BYLSERVER-1693
parent
95d297ad
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
3 deletions
+56
-3
MainActivity.kt
app/src/main/java/com/duolebo/blyrobot/MainActivity.kt
+4
-1
Task.kt
app/src/main/java/com/duolebo/blyrobot/data/Task.kt
+45
-2
TaskManager.kt
app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt
+7
-0
No files found.
app/src/main/java/com/duolebo/blyrobot/MainActivity.kt
View file @
1b9e7fae
...
@@ -89,7 +89,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
...
@@ -89,7 +89,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
private
fun
start
()
{
private
fun
start
()
{
startBtn
.
isEnabled
=
false
startBtn
.
isEnabled
=
false
startBtn
.
isFocusable
=
false
stopBtn
.
isEnabled
=
true
stopBtn
.
isEnabled
=
true
stopBtn
.
isFocusable
=
true
if
(
TaskManager
.
instance
.
tasks
.
size
>
0
)
{
if
(
TaskManager
.
instance
.
tasks
.
size
>
0
)
{
startRobot
()
startRobot
()
}
}
...
@@ -102,7 +104,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
...
@@ -102,7 +104,9 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
private
fun
stop
()
{
private
fun
stop
()
{
stopRobot
()
stopRobot
()
stopBtn
.
isEnabled
=
false
stopBtn
.
isEnabled
=
false
stopBtn
.
isFocusable
=
false
startBtn
.
isEnabled
=
true
startBtn
.
isEnabled
=
true
startBtn
.
isFocusable
=
true
}
}
private
fun
resetStartBtn
()
{
private
fun
resetStartBtn
()
{
...
@@ -196,7 +200,6 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
...
@@ -196,7 +200,6 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback {
if
(
TaskManager
.
instance
.
tasks
.
size
>
0
)
{
if
(
TaskManager
.
instance
.
tasks
.
size
>
0
)
{
startRobot
()
startRobot
()
startSet
=
false
startSet
=
false
startBtn
.
text
=
"停止"
refreshBtn
.
isEnabled
=
false
refreshBtn
.
isEnabled
=
false
}
}
else
{
else
{
...
...
app/src/main/java/com/duolebo/blyrobot/data/Task.kt
View file @
1b9e7fae
...
@@ -20,7 +20,9 @@ import java.text.SimpleDateFormat
...
@@ -20,7 +20,9 @@ import java.text.SimpleDateFormat
import
java.util.*
import
java.util.*
import
kotlin.collections.ArrayList
import
kotlin.collections.ArrayList
/**
* 任务类
*/
class
Task
:
Thread
,
IAppBaseCallback
{
class
Task
:
Thread
,
IAppBaseCallback
{
enum
class
State
{
enum
class
State
{
...
@@ -61,6 +63,9 @@ class Task : Thread, IAppBaseCallback {
...
@@ -61,6 +63,9 @@ class Task : Thread, IAppBaseCallback {
return
true
return
true
}
}
/**
* 从apk配置生成信息
*/
fun
from
(
apkInfo
:
ApkInfo
)
{
fun
from
(
apkInfo
:
ApkInfo
)
{
this
.
apkInfo
=
apkInfo
this
.
apkInfo
=
apkInfo
// this.imagePath = this.context.cacheDir.absolutePath + "/" + apkInfo.packageName
// this.imagePath = this.context.cacheDir.absolutePath + "/" + apkInfo.packageName
...
@@ -85,6 +90,9 @@ class Task : Thread, IAppBaseCallback {
...
@@ -85,6 +90,9 @@ class Task : Thread, IAppBaseCallback {
execute
()
execute
()
}
}
/**
* 执行任务
*/
private
fun
execute
()
{
private
fun
execute
()
{
//如果之前的上传任务还在执行,进行取消
//如果之前的上传任务还在执行,进行取消
if
(!
uploadId
.
isNullOrEmpty
())
{
if
(!
uploadId
.
isNullOrEmpty
())
{
...
@@ -130,6 +138,9 @@ class Task : Thread, IAppBaseCallback {
...
@@ -130,6 +138,9 @@ class Task : Thread, IAppBaseCallback {
report
()
report
()
}
}
/**
* 重置状态
*/
fun
reset
()
{
fun
reset
()
{
this
.
status
=
State
.
IDLE
this
.
status
=
State
.
IDLE
this
.
channelIndex
=
0
this
.
channelIndex
=
0
...
@@ -165,6 +176,9 @@ class Task : Thread, IAppBaseCallback {
...
@@ -165,6 +176,9 @@ class Task : Thread, IAppBaseCallback {
}
}
}
}
/**
* 启动app
*/
private
fun
launchApp
(
reset
:
Boolean
=
false
)
{
private
fun
launchApp
(
reset
:
Boolean
=
false
)
{
Log
.
i
(
TAG
,
"launchApp"
)
Log
.
i
(
TAG
,
"launchApp"
)
if
(
reset
)
{
if
(
reset
)
{
...
@@ -186,6 +200,10 @@ class Task : Thread, IAppBaseCallback {
...
@@ -186,6 +200,10 @@ class Task : Thread, IAppBaseCallback {
}
}
}
}
/**
* 频道轮询
* @param index 频道序号
*/
private
fun
processChannels
(
index
:
Int
):
Boolean
{
private
fun
processChannels
(
index
:
Int
):
Boolean
{
Log
.
i
(
TAG
,
"processChannels"
)
Log
.
i
(
TAG
,
"processChannels"
)
step
()
step
()
...
@@ -200,7 +218,7 @@ class Task : Thread, IAppBaseCallback {
...
@@ -200,7 +218,7 @@ class Task : Thread, IAppBaseCallback {
AdbUtil
.
sendMultiKey
(
this
.
apkInfo
.
channelKeyEvent
)
AdbUtil
.
sendMultiKey
(
this
.
apkInfo
.
channelKeyEvent
)
if
(!
AppUtil
.
isAppForeground
(
context
,
this
.
apkInfo
.
packageName
))
{
if
(!
AppUtil
.
isAppForeground
(
context
,
this
.
apkInfo
.
packageName
))
{
Log
.
i
(
TAG
,
"targe app crashed?"
)
Log
.
i
(
TAG
,
"targe
t
app crashed?"
)
return
false
return
false
}
}
...
@@ -210,6 +228,10 @@ class Task : Thread, IAppBaseCallback {
...
@@ -210,6 +228,10 @@ class Task : Thread, IAppBaseCallback {
return
true
return
true
}
}
/**
* 单个频道处理
* 分析抓包数据+屏幕截图
*/
private
fun
step
()
{
private
fun
step
()
{
Log
.
i
(
TAG
,
"step channel ${this.channelIndex}"
)
Log
.
i
(
TAG
,
"step channel ${this.channelIndex}"
)
...
@@ -261,6 +283,9 @@ class Task : Thread, IAppBaseCallback {
...
@@ -261,6 +283,9 @@ class Task : Thread, IAppBaseCallback {
}
}
}
}
/**
* 退出抓包
*/
private
fun
quitCapture
()
{
private
fun
quitCapture
()
{
proc
?.
destroy
()
proc
?.
destroy
()
AdbUtil
.
killTcpdump
()
AdbUtil
.
killTcpdump
()
...
@@ -365,12 +390,16 @@ class Task : Thread, IAppBaseCallback {
...
@@ -365,12 +390,16 @@ class Task : Thread, IAppBaseCallback {
Log
.
i
(
TAG
,
"upload errorCount: $errorCount"
)
Log
.
i
(
TAG
,
"upload errorCount: $errorCount"
)
}
}
/**
* ftp 上传回调监听
*/
private
fun
uploadImageCallback
():
UploadStatusDelegate
{
private
fun
uploadImageCallback
():
UploadStatusDelegate
{
val
totalUpload
=
this
.
uploadImages
.
size
val
totalUpload
=
this
.
uploadImages
.
size
Log
.
i
(
TAG
,
"total upload count : $totalUpload"
)
Log
.
i
(
TAG
,
"total upload count : $totalUpload"
)
return
object
:
UploadStatusDelegate
{
return
object
:
UploadStatusDelegate
{
override
fun
onCancelled
(
context
:
Context
?,
uploadInfo
:
UploadInfo
?)
{
override
fun
onCancelled
(
context
:
Context
?,
uploadInfo
:
UploadInfo
?)
{
}
}
override
fun
onProgress
(
context
:
Context
?,
uploadInfo
:
UploadInfo
?)
{
override
fun
onProgress
(
context
:
Context
?,
uploadInfo
:
UploadInfo
?)
{
...
@@ -389,6 +418,7 @@ class Task : Thread, IAppBaseCallback {
...
@@ -389,6 +418,7 @@ class Task : Thread, IAppBaseCallback {
}
}
}
}
//通过ftp上传图片到服务器
private
fun
uploadImage
()
{
private
fun
uploadImage
()
{
try
{
try
{
...
@@ -415,7 +445,11 @@ class Task : Thread, IAppBaseCallback {
...
@@ -415,7 +445,11 @@ class Task : Thread, IAppBaseCallback {
}
}
}
}
/**
* 先上报数据,截图上传继续在后台进行
*/
private
fun
report
()
{
private
fun
report
()
{
Log
.
i
(
TAG
,
"report...."
)
val
postJson
=
JSONObject
()
val
postJson
=
JSONObject
()
val
reportArray
=
JSONArray
()
val
reportArray
=
JSONArray
()
reportArray
.
put
(
this
.
reportJson
)
reportArray
.
put
(
this
.
reportJson
)
...
@@ -424,23 +458,32 @@ class Task : Thread, IAppBaseCallback {
...
@@ -424,23 +458,32 @@ class Task : Thread, IAppBaseCallback {
}
}
override
fun
onProtocolFailed
(
p0
:
IProtocol
?)
{
override
fun
onProtocolFailed
(
p0
:
IProtocol
?)
{
Log
.
i
(
TAG
,
"onProtocolFailed...."
)
this
.
status
=
State
.
REPORT_FAILED
this
.
status
=
State
.
REPORT_FAILED
finish
(
false
)
finish
(
false
)
}
}
override
fun
onHttpFailed
(
p0
:
IProtocol
?)
{
override
fun
onHttpFailed
(
p0
:
IProtocol
?)
{
Log
.
i
(
TAG
,
"onHttpFailed...."
)
this
.
status
=
State
.
REPORT_FAILED
this
.
status
=
State
.
REPORT_FAILED
finish
(
false
)
finish
(
false
)
}
}
override
fun
onProtocolSucceed
(
p0
:
IProtocol
?)
{
override
fun
onProtocolSucceed
(
p0
:
IProtocol
?)
{
Log
.
i
(
TAG
,
"onProtocolSucceed...."
)
this
.
status
=
State
.
COMPLETE
this
.
status
=
State
.
COMPLETE
finish
(
true
)
finish
(
true
)
}
}
var
taskListener
:
OnTaskListener
?
=
null
var
taskListener
:
OnTaskListener
?
=
null
/**
* 任务状态
*/
interface
OnTaskListener
{
interface
OnTaskListener
{
/**
* @param result true 成功完成
*/
fun
onComplete
(
result
:
Boolean
)
fun
onComplete
(
result
:
Boolean
)
}
}
...
...
app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt
View file @
1b9e7fae
...
@@ -5,6 +5,9 @@ import com.duolebo.blyrobot.data.Task
...
@@ -5,6 +5,9 @@ import com.duolebo.blyrobot.data.Task
import
java.util.*
import
java.util.*
import
kotlin.collections.ArrayList
import
kotlin.collections.ArrayList
/**
* 任务管理类
*/
class
TaskManager
{
class
TaskManager
{
companion
object
{
companion
object
{
...
@@ -20,6 +23,10 @@ class TaskManager {
...
@@ -20,6 +23,10 @@ class TaskManager {
private
var
currentTask
:
Task
?
=
null
private
var
currentTask
:
Task
?
=
null
private
var
scheduleTime
:
Timer
?
=
null
private
var
scheduleTime
:
Timer
?
=
null
/**
* 添加任务
* @param task
*/
fun
add
(
task
:
Task
)
{
fun
add
(
task
:
Task
)
{
for
(
existTask
in
tasks
)
{
for
(
existTask
in
tasks
)
{
Log
.
i
(
TAG
,
"exist task app: ${existTask.apkInfo.packageName}"
)
Log
.
i
(
TAG
,
"exist task app: ${existTask.apkInfo.packageName}"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment