Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
b41dadba
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
b41dadba
编写于
3月 04, 2020
作者:
J
jackjintai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify:
1、新增慢函数统计功能
上级
af2460a1
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
125 addition
and
47 deletion
+125
-47
Android/app/src/main/java/com/didichuxing/doraemondemo/App.java
...d/app/src/main/java/com/didichuxing/doraemondemo/App.java
+3
-2
Android/build.gradle
Android/build.gradle
+1
-1
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/DoraemonKitReal.java
...ain/java/com/didichuxing/doraemonkit/DoraemonKitReal.java
+8
-15
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/constant/DokitConstant.java
...a/com/didichuxing/doraemonkit/constant/DokitConstant.java
+0
-1
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/datapick/DataPickManager.java
...com/didichuxing/doraemonkit/datapick/DataPickManager.java
+4
-3
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/health/AppHealthInfoUtil.java
...didichuxing/doraemonkit/kit/health/AppHealthInfoUtil.java
+2
-1
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/methodtrace/MethodCostFragment.java
...uxing/doraemonkit/kit/methodtrace/MethodCostFragment.java
+2
-1
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/NetworkManager.java
...m/didichuxing/doraemonkit/kit/network/NetworkManager.java
+30
-1
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/sysinfo/SysInfoFragment.java
.../didichuxing/doraemonkit/kit/sysinfo/SysInfoFragment.java
+71
-18
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/DoraemonStatisticsUtil.java
.../didichuxing/doraemonkit/util/DoraemonStatisticsUtil.java
+4
-4
未找到文件。
Android/app/src/main/java/com/didichuxing/doraemondemo/App.java
浏览文件 @
b41dadba
...
...
@@ -30,10 +30,11 @@ public class App extends Application {
kits
.
add
(
new
DemoKit
());
//测试环境:a49842eeebeb1989b3f9565eb12c276b
//线上环境:749a0600b5e48dd77cf8ee680be7b1b7
DoraemonKit
.
install
(
this
,
kits
,
"a49842eeebeb1989b3f9565eb12c276b"
);
DoraemonKit
.
disableUpload
(
);
//是否显示入口icon
//DoraemonKit.setAwaysShowMainIcon(false);
DoraemonKit
.
disableUpload
();
DoraemonKit
.
install
(
this
,
kits
,
"749a0600b5e48dd77cf8ee680be7b1b7"
);
Fresco
.
initialize
(
this
);
DoraemonKit
.
setWebDoorCallback
(
new
WebDoorManager
.
WebDoorCallback
()
{
@Override
...
...
Android/build.gradle
浏览文件 @
b41dadba
...
...
@@ -14,7 +14,7 @@ buildscript {
}
dependencies
{
classpath
'com.android.tools.build:gradle:3.6.
0
'
classpath
'com.android.tools.build:gradle:3.6.
1
'
classpath
'com.novoda:bintray-release:0.9.2'
classpath
'com.didichuxing.doraemonkit:doraemonkit-plugin:1000.0.2'
// NOTE: Do not place your application dependencies here; they belong
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/DoraemonKitReal.java
浏览文件 @
b41dadba
...
...
@@ -266,12 +266,8 @@ class DoraemonKitReal {
AbstractKit
devToolKit
=
(
AbstractKit
)
Class
.
forName
(
"com.didichuxing.doraemonkit.weex.devtool.DevToolKit"
).
newInstance
();
weex
.
add
(
devToolKit
);
DokitConstant
.
KIT_MAPS
.
put
(
Category
.
WEEX
,
weex
);
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
catch
(
InstantiationException
e
)
{
e
.
printStackTrace
();
}
catch
(
Exception
e
)
{
}
DokitConstant
.
KIT_MAPS
.
put
(
Category
.
PERFORMANCE
,
performance
);
...
...
@@ -285,7 +281,11 @@ class DoraemonKitReal {
DokitViewManager
.
getInstance
().
init
(
app
);
//上传app基本信息便于统计
if
(
sEnableUpload
)
{
DoraemonStatisticsUtil
.
uploadUserInfo
(
app
);
try
{
DoraemonStatisticsUtil
.
uploadUserInfo
(
app
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
installLeakCanary
(
app
);
initAndroidUtil
(
app
);
...
...
@@ -472,14 +472,7 @@ class DoraemonKitReal {
Method
install
=
leakCanaryManager
.
getMethod
(
"install"
,
Application
.
class
);
//调用静态的install方法
install
.
invoke
(
null
,
app
);
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
NoSuchMethodException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
catch
(
InvocationTargetException
e
)
{
e
.
printStackTrace
();
}
catch
(
Exception
e
)
{
}
}
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/constant/DokitConstant.java
浏览文件 @
b41dadba
...
...
@@ -103,7 +103,6 @@ public class DokitConstant {
Class
.
forName
(
"com.didichuxing.doraemonkit.DoraemonKitRpc"
);
isRpcSdk
=
true
;
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
isRpcSdk
=
false
;
}
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/datapick/DataPickManager.java
浏览文件 @
b41dadba
...
...
@@ -7,6 +7,7 @@ import com.blankj.utilcode.util.FileIOUtils;
import
com.blankj.utilcode.util.FileUtils
;
import
com.blankj.utilcode.util.GsonUtils
;
import
com.blankj.utilcode.util.PathUtils
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
com.didichuxing.doraemonkit.okgo.OkGo
;
import
com.didichuxing.doraemonkit.okgo.callback.StringCallback
;
import
com.didichuxing.doraemonkit.okgo.model.Response
;
...
...
@@ -102,9 +103,9 @@ public class DataPickManager {
* 真正需要上传的方法
*/
private
void
realPost
(
final
int
from
,
String
content
)
{
LogHelper
.
i
(
TAG
,
"content===>"
+
content
);
LogHelper
.
i
(
TAG
,
"====realPost======from==>"
+
from
);
OkGo
.<
String
>
post
(
"http://dokit-test.intra.xiaojukeji.com/pointData/addPointData"
)
//
LogHelper.i(TAG,"content===>" + content);
//
LogHelper.i(TAG, "====realPost======from==>" + from);
OkGo
.<
String
>
post
(
NetworkManager
.
APP_DATA_PICK_URL
)
.
upJson
(
content
)
.
execute
(
new
StringCallback
()
{
@Override
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/health/AppHealthInfoUtil.java
浏览文件 @
b41dadba
...
...
@@ -13,6 +13,7 @@ import com.didichuxing.doraemonkit.kit.blockmonitor.core.BlockMonitorManager;
import
com.didichuxing.doraemonkit.kit.common.PerformanceDataManager
;
import
com.didichuxing.doraemonkit.kit.crash.CrashCaptureManager
;
import
com.didichuxing.doraemonkit.kit.health.model.AppHealthInfo
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
com.didichuxing.doraemonkit.okgo.OkGo
;
import
com.didichuxing.doraemonkit.okgo.callback.StringCallback
;
import
com.didichuxing.doraemonkit.okgo.model.Response
;
...
...
@@ -289,7 +290,7 @@ public class AppHealthInfoUtil {
}
//线上地址:https://www.dokit.cn/healthCheck/addCheckData
//测试环境地址:http://dokit-test.intra.xiaojukeji.com/healthCheck/addCheckData
OkGo
.<
String
>
post
(
"https://www.dokit.cn/healthCheck/addCheckData"
)
OkGo
.<
String
>
post
(
NetworkManager
.
APP_HEALTH_URL
)
.
upJson
(
GsonUtils
.
toJson
(
mAppHealthInfo
))
.
execute
(
new
StringCallback
()
{
@Override
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/methodtrace/MethodCostFragment.java
浏览文件 @
b41dadba
...
...
@@ -8,6 +8,7 @@ import android.view.View;
import
android.widget.TextView
;
import
com.didichuxing.doraemonkit.R
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
com.didichuxing.doraemonkit.ui.base.BaseFragment
;
import
com.didichuxing.doraemonkit.ui.widget.titlebar.HomeTitleBar
;
import
com.didichuxing.doraemonkit.ui.widget.webview.MyWebView
;
...
...
@@ -41,7 +42,7 @@ public class MethodCostFragment extends BaseFragment {
}
});
mWebView
=
findViewById
(
R
.
id
.
webview
);
mWebView
.
loadUrl
(
"http://xingyun.xiaojukeji.com/docs/dokit/#/TimeProfiler"
);
mWebView
.
loadUrl
(
NetworkManager
.
APP_DOCUMENT_URL
);
}
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/NetworkManager.java
浏览文件 @
b41dadba
...
...
@@ -16,15 +16,44 @@ import java.util.concurrent.atomic.AtomicBoolean;
* @desc: 提供网络抓包功能开启、关闭、数据统计功能的manager
*/
public
class
NetworkManager
{
/**
* ########以下为数据mock 的相关网络接口#########
*/
public
static
final
String
MOCK_SCHEME_HTTP
=
"http://"
;
public
static
final
String
MOCK_SCHEME_HTTPS
=
"https://"
;
// private static final String MOCK_HOST_DEBUG = "xyrd.intra.xiaojukeji.com";
// private static final String MOCK_HOST_DEBUG = "xyrd.intra.xiaojukeji.com";
private
static
final
String
MOCK_HOST_DEBUG
=
"mock.dokit.cn"
;
private
static
final
String
MOCK_HOST_RELEASE
=
"mock.dokit.cn"
;
private
static
final
String
MOCK_DEBUG_DOMAIN
=
MOCK_SCHEME_HTTP
+
MOCK_HOST_DEBUG
;
private
static
final
String
MOCK_RELEASE_DOMAIN
=
MOCK_SCHEME_HTTPS
+
MOCK_HOST_RELEASE
;
public
static
final
String
MOCK_DOMAIN
=
BuildConfig
.
DEBUG
?
MOCK_DEBUG_DOMAIN
:
MOCK_RELEASE_DOMAIN
;
public
static
final
String
MOCK_HOST
=
BuildConfig
.
DEBUG
?
MOCK_HOST_DEBUG
:
MOCK_HOST_RELEASE
;
/**
* ########以上为数据mock 的相关网络接口#########
*/
/**
* ########app健康体检相关接口 的相关网络接口#########
* 线上地址:https://www.dokit.cn/healthCheck/addCheckData
* 测试环境地址:http://dokit-test.intra.xiaojukeji.com/healthCheck/addCheckData
*/
public
static
final
String
APP_HEALTH_URL
=
"https://www.dokit.cn/healthCheck/addCheckData"
;
/**
* ########业务埋点的网络接口#########
*/
public
static
final
String
APP_DATA_PICK_URL
=
"http://dokit-test.intra.xiaojukeji.com/pointData/addPointData"
;
/**
* 慢函数操作文档
*/
public
static
final
String
APP_DOCUMENT_URL
=
"http://xingyun.xiaojukeji.com/docs/dokit/#/TimeProfiler"
;
/**
* app 启动数据埋点
*/
public
static
final
String
APP_START_DATA_PICK_URL
=
"https://doraemon.xiaojukeji.com/uploadAppData"
;
private
static
final
int
MAX_SIZE
=
100
;
...
...
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/sysinfo/SysInfoFragment.java
浏览文件 @
b41dadba
...
...
@@ -45,8 +45,13 @@ public class SysInfoFragment extends BaseFragment {
@Override
public
void
onViewCreated
(
@NonNull
View
view
,
@Nullable
Bundle
savedInstanceState
)
{
super
.
onViewCreated
(
view
,
savedInstanceState
);
initView
();
initData
();
try
{
initView
();
initData
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
private
void
initView
()
{
...
...
@@ -67,7 +72,7 @@ public class SysInfoFragment extends BaseFragment {
mInfoList
.
addItemDecoration
(
decoration
);
}
private
void
initData
()
{
private
void
initData
()
throws
Exception
{
List
<
SysInfoItem
>
sysInfoItems
=
new
ArrayList
<>();
addAppData
(
sysInfoItems
);
addDeviceData
(
sysInfoItems
);
...
...
@@ -91,27 +96,70 @@ public class SysInfoFragment extends BaseFragment {
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_package_target_sdk
),
String
.
valueOf
(
getContext
().
getApplicationInfo
().
targetSdkVersion
)));
}
private
void
addDeviceData
(
List
<
SysInfoItem
>
sysInfoItems
)
{
private
void
addDeviceData
(
List
<
SysInfoItem
>
sysInfoItems
)
throws
Exception
{
sysInfoItems
.
add
(
new
TitleItem
(
getString
(
R
.
string
.
dk_sysinfo_device_info
)));
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_brand_and_model
),
Build
.
MANUFACTURER
+
" "
+
Build
.
MODEL
));
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_android_version
),
Build
.
VERSION
.
RELEASE
+
" ("
+
Build
.
VERSION
.
SDK_INT
+
")"
));
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_ext_storage_free
),
DeviceUtils
.
getSDCardSpace
(
getContext
())));
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_rom_free
),
DeviceUtils
.
getRomSpace
(
getContext
())));
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_display_size
),
UIUtils
.
getWidthPixels
()
+
"x"
+
UIUtils
.
getRealHeightPixels
()));
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_display_inch
),
""
+
UIUtils
.
getScreenInch
(
getActivity
())));
sysInfoItems
.
add
(
new
SysInfoItem
(
"ROOT"
,
String
.
valueOf
(
DeviceUtils
.
isRoot
(
getContext
()))));
sysInfoItems
.
add
(
new
SysInfoItem
(
"DENSITY"
,
String
.
valueOf
(
UIUtils
.
getDensity
())));
sysInfoItems
.
add
(
new
SysInfoItem
(
"IP"
,
TextUtils
.
isEmpty
(
NetworkUtils
.
getIPAddress
(
true
))
?
"null"
:
NetworkUtils
.
getIPAddress
(
true
)));
sysInfoItems
.
add
(
new
SysInfoItem
(
"Mac"
,
TextUtils
.
isEmpty
(
com
.
blankj
.
utilcode
.
util
.
DeviceUtils
.
getMacAddress
())
?
"null"
:
com
.
blankj
.
utilcode
.
util
.
DeviceUtils
.
getMacAddress
()));
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_ext_storage_free
),
DeviceUtils
.
getSDCardSpace
(
getContext
())));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_rom_free
),
DeviceUtils
.
getRomSpace
(
getContext
())));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_display_size
),
UIUtils
.
getWidthPixels
()
+
"x"
+
UIUtils
.
getRealHeightPixels
()));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
getString
(
R
.
string
.
dk_sysinfo_display_inch
),
""
+
UIUtils
.
getScreenInch
(
getActivity
())));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
"ROOT"
,
String
.
valueOf
(
com
.
blankj
.
utilcode
.
util
.
DeviceUtils
.
isDeviceRooted
())));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
"DENSITY"
,
String
.
valueOf
(
UIUtils
.
getDensity
())));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
"IP"
,
TextUtils
.
isEmpty
(
NetworkUtils
.
getIPAddress
(
true
))
?
"null"
:
NetworkUtils
.
getIPAddress
(
true
)));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
"Mac"
,
TextUtils
.
isEmpty
(
com
.
blankj
.
utilcode
.
util
.
DeviceUtils
.
getMacAddress
())
?
"null"
:
com
.
blankj
.
utilcode
.
util
.
DeviceUtils
.
getMacAddress
()));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
"IMEI"
,
TextUtils
.
isEmpty
(
PhoneUtils
.
getIMEI
())
?
"null"
:
PhoneUtils
.
getIMEI
()));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
"Sign MD5"
,
AppUtils
.
getAppSignatureMD5
()));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
"Sign SHA1"
,
AppUtils
.
getAppSignatureSHA1
()));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
sysInfoItems
.
add
(
new
SysInfoItem
(
"Sign SHA256"
,
AppUtils
.
getAppSignatureSHA256
()));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
sysInfoItems
.
add
(
new
SysInfoItem
(
"Sign MD5"
,
AppUtils
.
getAppSignatureMD5
()));
sysInfoItems
.
add
(
new
SysInfoItem
(
"Sign SHA1"
,
AppUtils
.
getAppSignatureSHA1
()));
sysInfoItems
.
add
(
new
SysInfoItem
(
"Sign SHA256"
,
AppUtils
.
getAppSignatureSHA256
()));
}
/**
...
...
@@ -174,7 +222,12 @@ public class SysInfoFragment extends BaseFragment {
}
private
String
checkPermission
(
String
...
perms
)
{
return
PermissionUtil
.
hasPermissions
(
getContext
(),
perms
)
?
"YES"
:
"NO"
;
try
{
return
PermissionUtil
.
hasPermissions
(
getContext
(),
perms
)
?
"YES"
:
"NO"
;
}
catch
(
NullPointerException
e
)
{
e
.
printStackTrace
();
}
return
"NO"
;
}
}
Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/DoraemonStatisticsUtil.java
浏览文件 @
b41dadba
...
...
@@ -3,6 +3,7 @@ package com.didichuxing.doraemonkit.util;
import
android.content.Context
;
import
com.didichuxing.doraemonkit.BuildConfig
;
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
...
...
@@ -27,8 +28,7 @@ public class DoraemonStatisticsUtil {
private
DoraemonStatisticsUtil
()
{
}
public
static
void
uploadUserInfo
(
Context
context
)
{
String
url
=
"https://doraemon.xiaojukeji.com/uploadAppData"
;
public
static
void
uploadUserInfo
(
Context
context
)
throws
Exception
{
String
appId
=
SystemUtil
.
getPackageName
(
context
);
String
appName
=
SystemUtil
.
getAppName
(
context
);
String
type
=
"Android"
;
...
...
@@ -52,14 +52,14 @@ public class DoraemonStatisticsUtil {
RequestBody
requestBody
=
RequestBody
.
create
(
mediaType
,
jsonObject
.
toString
());
Request
request
=
new
Request
.
Builder
()
.
url
(
url
)
.
url
(
NetworkManager
.
APP_START_DATA_PICK_URL
)
.
post
(
requestBody
)
.
build
();
Call
call
=
client
.
newCall
(
request
);
call
.
enqueue
(
new
Callback
()
{
@Override
public
void
onFailure
(
Call
call
,
IOException
e
)
{
e
.
printStackTrace
();
}
@Override
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录