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
661cd827
Commit
661cd827
authored
Oct 06, 2018
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
APK图片抓取识别及轮播流地址抓取,流程串联
#BYLSERVER-1438
parent
fe591e7d
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
39 additions
and
18 deletions
+39
-18
Task.kt
app/src/main/java/com/duolebo/blyrobot/data/Task.kt
+16
-6
ApkReportProtocol.kt
...n/java/com/duolebo/blyrobot/protocol/ApkReportProtocol.kt
+2
-1
GetAppInfoProtocol.kt
.../java/com/duolebo/blyrobot/protocol/GetAppInfoProtocol.kt
+0
-4
BylRobotService.kt
...main/java/com/duolebo/blyrobot/service/BylRobotService.kt
+5
-1
TaskManager.kt
app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt
+3
-3
AdbUtil.kt
app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt
+2
-2
Config.kt
app/src/main/java/com/duolebo/blyrobot/util/Config.kt
+11
-1
No files found.
app/src/main/java/com/duolebo/blyrobot/data/Task.kt
View file @
661cd827
package
com.duolebo.blyrobot.data
package
com.duolebo.blyrobot.data
import
android.content.Context
import
android.content.Context
import
android.os.Environment
import
android.util.Log
import
android.util.Log
import
com.duolebo.appbase.AppBaseHandler
import
com.duolebo.appbase.AppBaseHandler
import
com.duolebo.appbase.IAppBaseCallback
import
com.duolebo.appbase.IAppBaseCallback
...
@@ -23,8 +24,11 @@ class Task : IAppBaseCallback {
...
@@ -23,8 +24,11 @@ class Task : IAppBaseCallback {
private
val
TAG
=
"Task"
private
val
TAG
=
"Task"
lateinit
var
apkInfo
:
ApkInfo
lateinit
var
apkInfo
:
ApkInfo
//截图存放路径
//
截图存放路径
private
lateinit
var
imagePath
:
String
private
lateinit
var
imagePath
:
String
// 抓包存放路径
private
var
capturePath
=
Environment
.
getExternalStorageDirectory
().
absolutePath
+
"/capture.txt"
private
var
channelIndex
=
0
private
var
channelIndex
=
0
...
@@ -43,11 +47,13 @@ class Task : IAppBaseCallback {
...
@@ -43,11 +47,13 @@ class Task : IAppBaseCallback {
}
}
fun
from
(
apkInfo
:
ApkInfo
)
{
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
)
val
dir
=
File
(
this
.
imagePath
)
if
(!
dir
.
exists
())
if
(!
dir
.
exists
())
dir
.
mkdirs
()
dir
.
mkdirs
()
}
}
fun
start
()
{
fun
start
()
{
...
@@ -100,8 +106,11 @@ class Task : IAppBaseCallback {
...
@@ -100,8 +106,11 @@ class Task : IAppBaseCallback {
// 抓包处理
// 抓包处理
private
fun
capture
()
{
private
fun
capture
()
{
Log
.
i
(
TAG
,
"capture"
)
Log
.
i
(
TAG
,
"capture"
)
val
file
=
File
(
this
.
capturePath
)
if
(
file
.
exists
())
file
.
delete
()
Thread
(
Runnable
{
Thread
(
Runnable
{
proc
=
AdbUtil
.
tcpCapture
(
""
)
proc
=
AdbUtil
.
tcpCapture
(
this
.
capturePath
)
}).
start
()
}).
start
()
Log
.
i
(
TAG
,
"capture sleep ${this.apkInfo.captureDelay} seconds"
)
Log
.
i
(
TAG
,
"capture sleep ${this.apkInfo.captureDelay} seconds"
)
Thread
.
sleep
(
this
.
apkInfo
.
captureDelay
*
1000L
)
Thread
.
sleep
(
this
.
apkInfo
.
captureDelay
*
1000L
)
...
@@ -113,7 +122,8 @@ class Task : IAppBaseCallback {
...
@@ -113,7 +122,8 @@ class Task : IAppBaseCallback {
// 分析http抓包文件
// 分析http抓包文件
private
fun
analysisCapture
():
ArrayList
<
PlayInfo
>
{
private
fun
analysisCapture
():
ArrayList
<
PlayInfo
>
{
val
playUrlItems
=
ArrayList
<
PlayInfo
>()
val
playUrlItems
=
ArrayList
<
PlayInfo
>()
val
file
=
File
(
"/sdcard/capture.txt"
)
val
file
=
File
(
Environment
.
getExternalStorageDirectory
().
absolutePath
+
"/capture.txt"
)
val
lines
=
file
.
readLines
()
val
lines
=
file
.
readLines
()
var
partUrl
=
""
var
partUrl
=
""
...
@@ -189,7 +199,7 @@ class Task : IAppBaseCallback {
...
@@ -189,7 +199,7 @@ class Task : IAppBaseCallback {
// 截图处理,转成jpg
// 截图处理,转成jpg
private
fun
screenShot
(
absName
:
String
)
{
private
fun
screenShot
(
absName
:
String
)
{
val
pngPath
=
"
/
$absName.png"
val
pngPath
=
"$absName.png"
val
jpgPath
=
pngPath
.
replace
(
".png"
,
".jpg"
)
val
jpgPath
=
pngPath
.
replace
(
".png"
,
".jpg"
)
AdbUtil
.
screenShot
(
pngPath
)
AdbUtil
.
screenShot
(
pngPath
)
// png转换成jpg
// png转换成jpg
...
...
app/src/main/java/com/duolebo/blyrobot/protocol/ApkReportProtocol.kt
View file @
661cd827
...
@@ -5,6 +5,7 @@ import com.duolebo.appbase.IModel
...
@@ -5,6 +5,7 @@ import com.duolebo.appbase.IModel
import
com.duolebo.appbase.prj.bmtv.protocol.IProtocolConfig
import
com.duolebo.appbase.prj.bmtv.protocol.IProtocolConfig
import
com.duolebo.appbase.prj.bmtv.protocol.ProtocolBase
import
com.duolebo.appbase.prj.bmtv.protocol.ProtocolBase
import
com.duolebo.blyrobot.data.ApkReportData
import
com.duolebo.blyrobot.data.ApkReportData
import
com.duolebo.blyrobot.util.Config
class
ApkReportProtocol
(
context
:
Context
?,
config
:
IProtocolConfig
?)
:
ProtocolBase
(
context
,
config
)
{
class
ApkReportProtocol
(
context
:
Context
?,
config
:
IProtocolConfig
?)
:
ProtocolBase
(
context
,
config
)
{
...
@@ -19,7 +20,7 @@ class ApkReportProtocol(context: Context?, config: IProtocolConfig?) : ProtocolB
...
@@ -19,7 +20,7 @@ class ApkReportProtocol(context: Context?, config: IProtocolConfig?) : ProtocolB
}
}
override
fun
prepareProtocolRequestKey
():
String
{
override
fun
prepareProtocolRequestKey
():
String
{
return
"http://test.duolebo.com/staging/apkReport/report.do"
return
Config
.
instance
.
getReportProtocolUrl
()
}
}
}
}
\ No newline at end of file
app/src/main/java/com/duolebo/blyrobot/protocol/GetAppInfoProtocol.kt
View file @
661cd827
...
@@ -21,8 +21,4 @@ class GetAppInfoProtocol(context: Context?, config: IProtocolConfig?) : Protocol
...
@@ -21,8 +21,4 @@ class GetAppInfoProtocol(context: Context?, config: IProtocolConfig?) : Protocol
return
""
return
""
}
}
override
fun
prepareHttpRequestUrl
():
String
{
return
"http://test.duolebo.com/staging/apkInfo/query.do"
}
}
}
\ No newline at end of file
app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt
View file @
661cd827
...
@@ -9,6 +9,7 @@ import android.content.IntentFilter
...
@@ -9,6 +9,7 @@ import android.content.IntentFilter
import
android.os.IBinder
import
android.os.IBinder
import
android.support.v4.content.LocalBroadcastManager
import
android.support.v4.content.LocalBroadcastManager
import
android.util.Log
import
android.util.Log
import
com.duolebo.blyrobot.data.ApkInfo
import
com.duolebo.blyrobot.data.Task
import
com.duolebo.blyrobot.data.Task
import
com.duolebo.blyrobot.tools.TaskManager
import
com.duolebo.blyrobot.tools.TaskManager
import
com.duolebo.blyrobot.util.AdbUtil
import
com.duolebo.blyrobot.util.AdbUtil
...
@@ -65,7 +66,10 @@ class BylRobotService: Service() {
...
@@ -65,7 +66,10 @@ class BylRobotService: Service() {
private
fun
loadTask
()
{
private
fun
loadTask
()
{
Log
.
i
(
TAG
,
"loadTask..."
)
Log
.
i
(
TAG
,
"loadTask..."
)
val
task
=
Task
(
this
)
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
.
add
(
task
)
TaskManager
.
instance
.
start
()
TaskManager
.
instance
.
start
()
}
}
...
...
app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt
View file @
661cd827
...
@@ -19,7 +19,7 @@ class TaskManager {
...
@@ -19,7 +19,7 @@ class TaskManager {
fun
add
(
task
:
Task
)
{
fun
add
(
task
:
Task
)
{
task
.
taskListener
=
object
:
Task
.
OnTaskListener
{
task
.
taskListener
=
object
:
Task
.
OnTaskListener
{
override
fun
onComplete
()
{
override
fun
onComplete
(
result
:
Boolean
)
{
remove
(
task
)
remove
(
task
)
}
}
}
}
...
@@ -28,7 +28,7 @@ class TaskManager {
...
@@ -28,7 +28,7 @@ class TaskManager {
fun
remove
(
task
:
Task
)
{
fun
remove
(
task
:
Task
)
{
val
item
=
tasks
.
find
{
val
item
=
tasks
.
find
{
it
.
packageName
==
task
.
packageName
it
.
apkInfo
.
packageName
==
task
.
apkInfo
.
packageName
}
}
item
?.
run
{
item
?.
run
{
...
@@ -38,7 +38,7 @@ class TaskManager {
...
@@ -38,7 +38,7 @@ class TaskManager {
fun
isExist
(
task
:
Task
):
Boolean
{
fun
isExist
(
task
:
Task
):
Boolean
{
val
item
=
tasks
.
find
{
val
item
=
tasks
.
find
{
it
.
packageName
==
task
.
packageName
it
.
apkInfo
.
packageName
==
task
.
apkInfo
.
packageName
}
}
return
item
!=
null
return
item
!=
null
...
...
app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt
View file @
661cd827
...
@@ -202,8 +202,8 @@ object AdbUtil {
...
@@ -202,8 +202,8 @@ object AdbUtil {
exeCmdEcho
(
commands
,
true
)
exeCmdEcho
(
commands
,
true
)
}
}
fun
tcpCapture
(
tcpdump
:
String
):
Process
?
{
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'
"
// >> /sdcard/capture.txt\n
"
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
()
val
proc
=
getRootShell
()
var
dos
:
DataOutputStream
?
=
null
var
dos
:
DataOutputStream
?
=
null
...
...
app/src/main/java/com/duolebo/blyrobot/util/Config.kt
View file @
661cd827
...
@@ -3,8 +3,12 @@ package com.duolebo.blyrobot.util
...
@@ -3,8 +3,12 @@ package com.duolebo.blyrobot.util
import
com.duolebo.appbase.prj.bmtv.protocol.IProtocolConfig
import
com.duolebo.appbase.prj.bmtv.protocol.IProtocolConfig
class
Config
:
IProtocolConfig
{
class
Config
:
IProtocolConfig
{
private
val
isDebug
=
false
override
fun
getProtocolUrl
():
String
{
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
{
override
fun
getTvid
():
String
{
...
@@ -15,6 +19,12 @@ class Config: IProtocolConfig {
...
@@ -15,6 +19,12 @@ class Config: IProtocolConfig {
return
""
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
{
companion
object
{
val
instance
=
Config
()
val
instance
=
Config
()
}
}
...
...
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