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
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
<
PlayInfo
>
{
val
playUrlItems
=
ArrayList
<
PlayInfo
>()
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
...
...
app/src/main/java/com/duolebo/blyrobot/protocol/ApkReportProtocol.kt
View file @
661cd827
...
...
@@ -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
app/src/main/java/com/duolebo/blyrobot/protocol/GetAppInfoProtocol.kt
View file @
661cd827
...
...
@@ -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
app/src/main/java/com/duolebo/blyrobot/service/BylRobotService.kt
View file @
661cd827
...
...
@@ -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
()
}
...
...
app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt
View file @
661cd827
...
...
@@ -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
...
...
app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt
View file @
661cd827
...
...
@@ -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
...
...
app/src/main/java/com/duolebo/blyrobot/util/Config.kt
View file @
661cd827
...
...
@@ -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
()
}
...
...
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