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
Hide 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 {
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
{
...
...
app/src/main/java/com/duolebo/blyrobot/data/Task.kt
View file @
1b9e7fae
...
...
@@ -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
,
"targe
t
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
)
}
...
...
app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt
View file @
1b9e7fae
...
...
@@ -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}"
)
...
...
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