Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
115cb979
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
9 个月 前同步成功
通知
166
Star
19623
Fork
3062
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DoraemonKit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
115cb979
编写于
9月 23, 2021
作者:
M
momoxiangbei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加新四地图定位模拟
上级
3a6b1309
变更
18
隐藏空白更改
内联
并排
Showing
18 changed file
with
250 addition
and
9 deletion
+250
-9
Android/app/build.gradle
Android/app/build.gradle
+2
-0
Android/app/doraemonkit.gradle
Android/app/doraemonkit.gradle
+2
-1
Android/build.gradle
Android/build.gradle
+2
-2
Android/buildSrc/src/main/kotlin/com/didichuxing/doraemonkit/plugin/classtransformer/CommClassTransformer.kt
...raemonkit/plugin/classtransformer/CommClassTransformer.kt
+38
-1
Android/config.gradle
Android/config.gradle
+2
-0
Android/dokit-dmap/.gitignore
Android/dokit-dmap/.gitignore
+1
-0
Android/dokit-dmap/build.gradle
Android/dokit-dmap/build.gradle
+39
-0
Android/dokit-dmap/consumer-rules.pro
Android/dokit-dmap/consumer-rules.pro
+0
-0
Android/dokit-dmap/gradle.properties
Android/dokit-dmap/gradle.properties
+1
-0
Android/dokit-dmap/proguard-rules.pro
Android/dokit-dmap/proguard-rules.pro
+21
-0
Android/dokit-dmap/src/main/AndroidManifest.xml
Android/dokit-dmap/src/main/AndroidManifest.xml
+5
-0
Android/dokit-dmap/src/main/java/com/didichuxing/doraemonkit/aop/map/DMapLocationListenerProxy.java
...huxing/doraemonkit/aop/map/DMapLocationListenerProxy.java
+53
-0
Android/dokit-plugin/src/main/kotlin/com/didichuxing/doraemonkit/plugin/classtransformer/CommClassTransformer.kt
...raemonkit/plugin/classtransformer/CommClassTransformer.kt
+38
-1
Android/dokit/src/main/java/com/didichuxing/doraemonkit/aop/map/DMapLocationListener.kt
...m/didichuxing/doraemonkit/aop/map/DMapLocationListener.kt
+12
-0
Android/dokit/src/main/java/com/didichuxing/doraemonkit/aop/map/ThirdMapLocationListenerUtil.java
...ing/doraemonkit/aop/map/ThirdMapLocationListenerUtil.java
+4
-0
Android/dokit/src/main/java/com/didichuxing/doraemonkit/constant/DoKitModule.kt
.../java/com/didichuxing/doraemonkit/constant/DoKitModule.kt
+1
-0
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/gpsmock/GpsMockProxyManager.kt
...idichuxing/doraemonkit/kit/gpsmock/GpsMockProxyManager.kt
+28
-4
Android/settings.gradle
Android/settings.gradle
+1
-0
未找到文件。
Android/app/build.gradle
浏览文件 @
115cb979
...
...
@@ -160,6 +160,8 @@ dependencies {
implementation
rootProject
.
ext
.
dependencies
[
"okhttp_v3"
]
implementation
rootProject
.
ext
.
dependencies
[
"okgo"
]
implementation
rootProject
.
ext
.
dependencies
[
"glide"
]
implementation
rootProject
.
ext
.
dependencies
[
"dmap"
]
// implementation rootProject.ext.dependencies["glide_okhttp3"]
kapt
rootProject
.
ext
.
dependencies
[
"glide_compiler"
]
implementation
rootProject
.
ext
.
dependencies
[
"picasso"
]
...
...
Android/app/doraemonkit.gradle
浏览文件 @
115cb979
...
...
@@ -8,9 +8,10 @@ if (runType == 0) {
debugImplementation
project
(
":dokit"
)
debugImplementation
project
(
":dokit-mc"
)
debugImplementation
project
(
":dokit-ft"
)
debugImplementation
project
(
":dokit-weex"
)
//
debugImplementation project(":dokit-weex")
// debugImplementation project(":dokit-rpc")
// debugImplementation project(":dokit-rpc-mc")
debugImplementation
project
(
":dokit-dmap"
)
// todo xueying
releaseImplementation
project
(
":dokit-no-op"
)
}
}
else
if
(
runType
==
1
)
{
...
...
Android/build.gradle
浏览文件 @
115cb979
...
...
@@ -14,7 +14,7 @@ buildscript {
maven
{
url
"https://oss.sonatype.org/content/groups/public"
}
// maven { url 'https://artifactory.intra.xiaojukeji.com/artifactory/public' }
maven
{
url
'https://artifactory.intra.xiaojukeji.com/artifactory/public'
}
// todo xueying
// maven {
// //本地插件地址
// url uri('/Users/didi/project/dokit_repo')
...
...
@@ -44,7 +44,7 @@ allprojects {
maven
{
url
"https://oss.sonatype.org/content/groups/public"
}
// maven { url 'https://artifactory.intra.xiaojukeji.com/artifactory/public' }
maven
{
url
'https://artifactory.intra.xiaojukeji.com/artifactory/public'
}
// todo xueying
// maven {
// //本地插件地址
// url uri('/Users/didi/project/dokit_repo')
...
...
Android/buildSrc/src/main/kotlin/com/didichuxing/doraemonkit/plugin/classtransformer/CommClassTransformer.kt
浏览文件 @
115cb979
...
...
@@ -228,7 +228,19 @@ class CommClassTransformer : AbsClassTransformer() {
}
}
// // 插入新四地图相关字节码
// if (className == "com.didichuxing.bigdata.dp.locsdk.DIDILocationManager") {
// // 持续定位和单次定位
// klass.methods?.filter {
// it.name == "requestLocationUpdateOnce" || it.name == "requestLocationUpdates"
// }?.forEach { methodNode ->
// "${context.projectDir.lastPath()}->hook didi map succeed: ${className}_${methodNode?.name}_${methodNode?.desc}".println()
// methodNode?.instructions?.insert(createDMapLocationListenerInsnList())
// }
//
// // 反注册监听器
// // todo xueying
// }
}
...
...
@@ -996,6 +1008,31 @@ class CommClassTransformer : AbsClassTransformer() {
}
/**
* 创建新四地图代码指令
*/
// private fun createDMapLocationListenerInsnList(): InsnList {
// return with(InsnList()) {
// //在DIDILocationManager的requestLocationUpdateOnce方法之中插入自定义代理回调类
// add(TypeInsnNode(NEW, "com/didichuxing/doraemonkit/aop/map/DMapLocationListenerProxy"))
// add(InsnNode(DUP))
// //访问第一个参数
// add(VarInsnNode(ALOAD, 1))
// add(
// MethodInsnNode(
// INVOKESPECIAL,
// "com/didichuxing/doraemonkit/aop/map/DMapLocationListenerProxy",
// "<init>",
// "(Lcom/didichuxing/bigdata/dp/locsdk/DIDILocationListener;)V",
// false
// )
// )
// //对第一个参数进行重新赋值
// add(VarInsnNode(ASTORE, 1))
// this
// }
// }
/**
* 创建OkhttpClient一个数构造函数指令
...
...
Android/config.gradle
浏览文件 @
115cb979
...
...
@@ -129,6 +129,8 @@ ext {
"amap_map3d"
:
'com.amap.api:map3d:latest.integration'
,
"amap_search"
:
'com.amap.api:search:latest.integration'
,
"amap_navi"
:
'com.amap.api:navi-3dmap:latest.integration'
,
//新四地图
"dmap"
:
'com.didichuxing.bigdata.dp:didilocsdk:2.8.201'
,
//腾讯地图定位
"tencent_location"
:
'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.5'
,
"tencent_map"
:
'com.tencent.map:tencent-map-vector-sdk:4.4.0'
,
...
...
Android/dokit-dmap/.gitignore
0 → 100644
浏览文件 @
115cb979
/build
\ No newline at end of file
Android/dokit-dmap/build.gradle
0 → 100644
浏览文件 @
115cb979
plugins
{
id
'com.android.library'
}
android
{
compileSdkVersion
rootProject
.
ext
.
android
[
"compileSdkVersion"
]
defaultConfig
{
minSdkVersion
rootProject
.
ext
.
android
[
"minSdkVersion_16"
]
targetSdkVersion
rootProject
.
ext
.
android
[
"targetSdkVersion"
]
versionCode
rootProject
.
ext
.
android
[
"versionCode"
]
versionName
rootProject
.
ext
.
android
[
"versionName"
]
lintOptions
{
abortOnError
false
}
}
buildTypes
{
debug
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android-optimize.txt'
),
'proguard-rules.pro'
}
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android-optimize.txt'
),
'proguard-rules.pro'
}
}
lintOptions
{
abortOnError
false
}
}
dependencies
{
// compileOnly rootProject.ext.dependencies["dmap"]
implementation
project
(
path:
':dokit'
)
compileOnly
'com.didichuxing.bigdata.dp:didilocsdk:2.8.201'
}
\ No newline at end of file
Android/dokit-dmap/consumer-rules.pro
0 → 100644
浏览文件 @
115cb979
Android/dokit-dmap/gradle.properties
0 → 100644
浏览文件 @
115cb979
ARTIFACT_ID
=
dokitx-dmap
\ No newline at end of file
Android/dokit-dmap/proguard-rules.pro
0 → 100644
浏览文件 @
115cb979
# Add project specific ProGuard rules here.
#
You
can
control
the
set
of
applied
configuration
files
using
the
#
proguardFiles
setting
in
build
.
gradle
.
#
#
For
more
details
,
see
#
http
://
developer
.
android
.
com
/
guide
/
developing
/
tools
/
proguard
.
html
#
If
your
project
uses
WebView
with
JS
,
uncomment
the
following
#
and
specify
the
fully
qualified
class
name
to
the
JavaScript
interface
#
class
:
#-
keepclassmembers
class
fqcn
.
of
.
javascript
.
interface
.
for
.
webview
{
#
public
*
;
#
}
#
Uncomment
this
to
preserve
the
line
number
information
for
#
debugging
stack
traces
.
#-
keepattributes
SourceFile
,
LineNumberTable
#
If
you
keep
the
line
number
information
,
uncomment
this
to
#
hide
the
original
source
file
name
.
#-
renamesourcefileattribute
SourceFile
\ No newline at end of file
Android/dokit-dmap/src/main/AndroidManifest.xml
0 → 100644
浏览文件 @
115cb979
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.didichuxing.doraemonkit.dmap"
>
</manifest>
\ No newline at end of file
Android/dokit-dmap/src/main/java/com/didichuxing/doraemonkit/aop/map/DMapLocationListenerProxy.java
0 → 100644
浏览文件 @
115cb979
package
com.didichuxing.doraemonkit.aop.map
;
import
android.location.Location
;
import
androidx.annotation.NonNull
;
import
com.didichuxing.bigdata.dp.locsdk.DIDILocation
;
import
com.didichuxing.bigdata.dp.locsdk.DIDILocationListener
;
import
com.didichuxing.bigdata.dp.locsdk.ErrInfo
;
import
com.didichuxing.bigdata.dp.locsdk.trace.data.ETraceSource
;
import
com.didichuxing.doraemonkit.kit.gpsmock.GpsMockProxyManager
;
/**
* Created by mmxb on 2021/9/13.
*/
public
class
DMapLocationListenerProxy
implements
DIDILocationListener
,
DMapLocationListener
{
public
DIDILocationListener
didiLocationListener
;
public
DMapLocationListenerProxy
(
DIDILocationListener
didiLocationListener
)
{
this
.
didiLocationListener
=
didiLocationListener
;
GpsMockProxyManager
.
INSTANCE
.
addDMapLocationListenerProxy
(
this
);
}
@Override
public
void
onLocationChanged
(
DIDILocation
didiLocation
)
{
}
@Override
public
void
onLocationError
(
int
i
,
ErrInfo
errInfo
)
{
}
@Override
public
void
onStatusUpdate
(
String
s
,
int
i
,
String
s1
)
{
}
@NonNull
@Override
public
Object
getDMapLocation
()
{
return
didiLocationListener
;
}
@Override
public
void
onLocationChange
(
Location
location
)
{
DIDILocation
didiLocation
=
new
DIDILocation
();
DIDILocation
.
loadFromSystemLoc
(
location
,
ETraceSource
.
cache
,
0
);
// didiLocation.getLatitude();
// this.onLocationChanged();
}
}
Android/dokit-plugin/src/main/kotlin/com/didichuxing/doraemonkit/plugin/classtransformer/CommClassTransformer.kt
浏览文件 @
115cb979
...
...
@@ -228,7 +228,19 @@ class CommClassTransformer : AbsClassTransformer() {
}
}
// // 插入滴滴地图相关字节码
// if (className == "com.didichuxing.bigdata.dp.locsdk.DIDILocationManager") {
// // 持续定位和单次定位
// klass.methods?.filter {
// it.name == "requestLocationUpdateOnce" || it.name == "requestLocationUpdates"
// }?.forEach { methodNode ->
// "${context.projectDir.lastPath()}->hook didi map succeed: ${className}_${methodNode?.name}_${methodNode?.desc}".println()
// methodNode?.instructions?.insert(createDMapLocationListenerInsnList())
// }
//
// // 反注册监听器
// // todo xueying
// }
}
...
...
@@ -996,6 +1008,31 @@ class CommClassTransformer : AbsClassTransformer() {
}
/**
* 创建滴滴地图代码指令
*/
private
fun
createDMapLocationListenerInsnList
():
InsnList
{
return
with
(
InsnList
())
{
//在DIDILocationManager的requestLocationUpdateOnce方法之中插入自定义代理回调类
add
(
TypeInsnNode
(
NEW
,
"com/didichuxing/doraemonkit/aop/map/DMapLocationListenerProxy"
))
add
(
InsnNode
(
DUP
))
//访问第一个参数
add
(
VarInsnNode
(
ALOAD
,
1
))
add
(
MethodInsnNode
(
INVOKESPECIAL
,
"com/didichuxing/doraemonkit/aop/map/DMapLocationListenerProxy"
,
"<init>"
,
"(Lcom/didichuxing/bigdata/dp/locsdk/DIDILocationListener;)V"
,
false
)
)
//对第一个参数进行重新赋值
add
(
VarInsnNode
(
ASTORE
,
1
))
this
}
}
/**
* 创建OkhttpClient一个数构造函数指令
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/aop/map/DMapLocationListener.kt
0 → 100644
浏览文件 @
115cb979
package
com.didichuxing.doraemonkit.aop.map
import
android.location.Location
/**
* Created by mmxb on 2021/9/16.
*/
interface
DMapLocationListener
{
fun
getDMapLocation
():
Any
fun
onLocationChange
(
location
:
Location
?)
}
\ No newline at end of file
Android/dokit/src/main/java/com/didichuxing/doraemonkit/aop/map/ThirdMapLocationListenerUtil.java
浏览文件 @
115cb979
...
...
@@ -39,6 +39,10 @@ public class ThirdMapLocationListenerUtil {
GpsMockProxyManager
.
INSTANCE
.
removeBDAbsLocationListener
(
locationListener
);
}
public
static
void
unRegisterDMapLocationListener
(
DMapLocationListener
locationListener
){
GpsMockProxyManager
.
INSTANCE
.
removeDMapLocationListener
(
locationListener
);
}
public
static
void
unRegisterLocationListener
(
LocationListener
locationListener
)
{
GpsMockProxyManager
.
INSTANCE
.
removeLocationListener
(
locationListener
);
}
...
...
Android/dokit/src/main/java/com/didichuxing/doraemonkit/constant/DoKitModule.kt
浏览文件 @
115cb979
...
...
@@ -13,4 +13,5 @@ enum class DoKitModule {
MODULE_FT
,
MODULE_MC
,
MODULE_RPC_MC
,
MODULE_DMAP
}
\ No newline at end of file
Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/gpsmock/GpsMockProxyManager.kt
浏览文件 @
115cb979
...
...
@@ -10,7 +10,6 @@ import com.didichuxing.doraemonkit.aop.map.*
import
com.didichuxing.doraemonkit.kit.gpsmock.LocationHooker.LocationListenerProxy
import
com.tencent.map.geolocation.TencentLocation
import
com.tencent.map.geolocation.TencentLocationListener
import
java.util.*
/**
* 三方地图管理类
...
...
@@ -25,6 +24,7 @@ object GpsMockProxyManager {
private
val
mBDLocationListenerProxies
:
MutableList
<
BDLocationListenerProxy
?
>
=
ArrayList
()
private
val
mTencentLocationListenerProxies
:
MutableList
<
TencentLocationListenerProxy
?
>
=
ArrayList
()
private
val
mDMapLocationListenerProxies
:
MutableList
<
DMapLocationListener
>
=
ArrayList
()
private
val
mLocationListenerProxies
:
MutableList
<
LocationListenerProxy
>
=
ArrayList
()
...
...
@@ -52,6 +52,10 @@ object GpsMockProxyManager {
mTencentLocationListenerProxies
.
add
(
tencentLocationListenerProxy
)
}
fun
addDMapLocationListenerProxy
(
locationListenerProxy
:
DMapLocationListener
)
{
mDMapLocationListenerProxies
.
add
(
locationListenerProxy
)
}
fun
addLocationListenerProxy
(
locationListenerProxy
:
LocationListenerProxy
)
{
mLocationListenerProxies
.
add
(
locationListenerProxy
)
}
...
...
@@ -116,6 +120,16 @@ object GpsMockProxyManager {
}
}
fun
removeDMapLocationListener
(
listener
:
DMapLocationListener
)
{
val
it
=
mDMapLocationListenerProxies
.
iterator
()
while
(
it
.
hasNext
())
{
val
proxy
=
it
.
next
()
if
(
proxy
.
getDMapLocation
()
===
listener
)
{
it
.
remove
()
}
}
}
fun
clearProxy
()
{
mAMapLocationListenerProxies
.
clear
()
mBDAbsLocationListenerProxies
.
clear
()
...
...
@@ -126,7 +140,7 @@ object GpsMockProxyManager {
fun
mockLocationWithNotify
(
location
:
Location
?)
{
if
(
location
==
null
)
return
try
{
notifyLocationListenerProxy
(
location
)
}
catch
(
e
:
Exception
)
{
...
...
@@ -153,7 +167,11 @@ object GpsMockProxyManager {
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
try
{
notifyDMapLocationListenerProxy
(
location
)
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
}
private
fun
notifyAMapLocationListenerProxy
(
location
:
Location
?)
{
...
...
@@ -217,5 +235,11 @@ object GpsMockProxyManager {
}
}
private
fun
notifyDMapLocationListenerProxy
(
location
:
Location
?)
{
if
(
location
!=
null
)
{
for
(
dMapLocationListener
in
mDMapLocationListenerProxies
){
dMapLocationListener
.
onLocationChange
(
location
)
}
}
}
}
\ No newline at end of file
Android/settings.gradle
浏览文件 @
115cb979
...
...
@@ -11,3 +11,4 @@ include ':dokit-no-op'
include
':dokit-plugin'
//include ':dokit-rpc'
//include ':dokit-rpc-mc'
include
':dokit-dmap'
// todo xueying
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录