From 6fa9ddd2e0d560f2b489bb21be455f4fe5ce14e9 Mon Sep 17 00:00:00 2001 From: wanglikun7342 Date: Mon, 13 May 2019 17:31:03 +0800 Subject: [PATCH] =?UTF-8?q?change[]:=20android=E5=8F=91=E5=B8=831.1.7?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Android/doraemonkit-no-op/upload.gradle | 2 +- Android/doraemonkit/build.gradle | 3 - .../kit/blockmonitor/BlockListFragment.java | 2 +- .../kit/blockmonitor/core/MonitorCore.java | 2 +- .../kit/common/PerformanceDataManager.java | 57 ++++++++++-------- .../kit/crash/CrashCaptureFragment.java | 17 +++++- .../kit/crash/CrashDetailFragment.java | 1 + .../kit/crash/CrashHandlerManager.java | 2 +- .../kit/custom/MonitorDataUploadFragment.java | 3 - .../kit/network/aspect/AopUtils.java | 7 +++ .../kit/network/aspect/OkHttpAspect.java | 4 +- .../ui/crash/CrashCaptureAdapter.java | 11 ++-- .../util/DoraemonStatisticsUtil.java | 2 +- .../res/drawable-xxhdpi/dk_weak_network.png | Bin 2481 -> 7460 bytes .../res/layout/dk_fragment_block_list.xml | 1 + .../res/layout/dk_fragment_crash_capture.xml | 16 +++-- .../layout/dk_fragment_crash_capture_main.xml | 13 ++-- .../layout/dk_fragment_crash_detail_info.xml | 5 +- .../main/res/layout/dk_fragment_gps_mock.xml | 3 +- .../dk_fragment_monitor_data_upload_page.xml | 25 ++++---- .../main/res/layout/dk_fragment_parameter.xml | 13 ++-- .../main/res/layout/dk_fragment_web_door.xml | 1 - .../main/res/layout/dk_item_crash_capture.xml | 12 ++-- .../src/main/res/values/strings.xml | 2 +- Android/doraemonkit/upload.gradle | 2 +- 25 files changed, 118 insertions(+), 88 deletions(-) diff --git a/Android/doraemonkit-no-op/upload.gradle b/Android/doraemonkit-no-op/upload.gradle index 59cf5ca3..8aa3c5b5 100644 --- a/Android/doraemonkit-no-op/upload.gradle +++ b/Android/doraemonkit-no-op/upload.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.novoda.bintray-release' publish { def groupProjectID = 'com.didichuxing.doraemonkit' def artifactProjectID = 'doraemonkit-no-op' - def publishVersionID = '1.1.6' + def publishVersionID = '1.1.7' userOrg = 'doraemonkit' repoName = 'DoraemonKit' diff --git a/Android/doraemonkit/build.gradle b/Android/doraemonkit/build.gradle index e8b7f7fb..579d2c89 100644 --- a/Android/doraemonkit/build.gradle +++ b/Android/doraemonkit/build.gradle @@ -12,7 +12,6 @@ android { lintOptions { abortOnError false } - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } } @@ -42,8 +41,6 @@ dependencies { testImplementation 'junit:junit:4.12' implementation 'com.google.code.gson:gson:2.8.2' implementation 'com.google.zxing:core:3.3.0' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' } diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/BlockListFragment.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/BlockListFragment.java index 191eb14c..19032c2c 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/BlockListFragment.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/BlockListFragment.java @@ -63,7 +63,7 @@ public class BlockListFragment extends BaseFragment implements OnBlockInfoUpdate mBlockListAdapter.setOnItemClickListener(new BlockListAdapter.OnItemClickListener() { @Override public void onClick(BlockInfo info) { - mLogDetail.setText(info.toString() + info.toString() + info.toString()); + mLogDetail.setText(info.toString()); mLogDetail.setVisibility(View.VISIBLE); mBlockList.setVisibility(View.GONE); mTitleBar.setTitle(getResources().getString(R.string.dk_kit_block_monitor_detail), false); diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/core/MonitorCore.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/core/MonitorCore.java index a0e16fa3..93eea47f 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/core/MonitorCore.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/blockmonitor/core/MonitorCore.java @@ -12,7 +12,7 @@ import java.util.ArrayList; */ class MonitorCore implements Printer { private static final String TAG = "MonitorCore"; - private static final int BLOCK_THRESHOLD_MILLIS = 500; + private static final int BLOCK_THRESHOLD_MILLIS = 200; private long mStartTime = 0; private long mStartThreadTime = 0; diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/common/PerformanceDataManager.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/common/PerformanceDataManager.java index be479ffe..6aee701d 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/common/PerformanceDataManager.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/common/PerformanceDataManager.java @@ -7,12 +7,13 @@ import android.os.Debug; import android.os.Environment; import android.os.Handler; import android.os.HandlerThread; +import android.os.Looper; import android.os.Message; import android.os.Process; import android.support.annotation.RequiresApi; import android.text.TextUtils; +import android.text.format.DateUtils; import android.view.Choreographer; -import android.widget.Toast; import com.didichuxing.doraemonkit.R; import com.didichuxing.doraemonkit.config.PerformanceInfoConfig; @@ -22,7 +23,6 @@ import com.didichuxing.doraemonkit.util.FileManager; import com.didichuxing.doraemonkit.util.JsonUtil; import com.didichuxing.doraemonkit.util.LogHelper; import com.didichuxing.doraemonkit.util.threadpool.ThreadPoolProxyFactory; -import com.google.gson.JsonObject; import java.io.BufferedReader; import java.io.ByteArrayInputStream; @@ -40,6 +40,7 @@ import java.util.Date; public class PerformanceDataManager { private static final String TAG = "PerformanceDataManager"; private static final float SECOND_IN_NANOS = 1000000000f; + private static final int MAX_FRAME_RATE = 60; private static final int NORMAL_FRAME_RATE = 1; private String filePath; private String memoryFileName = "memory.txt"; @@ -48,12 +49,10 @@ public class PerformanceDataManager { private String customFileName = "custom.txt"; //自定义测试页面保存的文件名称 private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - private long mLastFrameTimeNanos; - private int mLastFrameRate; + private int mLastFrameRate = MAX_FRAME_RATE; private int mLastSkippedFrames; private float mLastCpuRate; private float mLastMemoryInfo; - private String mPackageName; private Handler mHandler; private HandlerThread mHandlerThread; private float mMaxMemory; @@ -69,23 +68,8 @@ public class PerformanceDataManager { private static final int MSG_SAVE_LOCAL = 3; private UploadMonitorInfoBean mUploadMonitorBean; private boolean mUploading; - - @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) - private Choreographer.FrameCallback mFrameCallback = new Choreographer.FrameCallback() { - @Override - public void doFrame(long frameTimeNanos) { - if (mLastFrameTimeNanos != 0L) { - long temp = frameTimeNanos - mLastFrameTimeNanos; - if (temp != 0) { - mLastFrameRate = Math.round(SECOND_IN_NANOS / (frameTimeNanos - mLastFrameTimeNanos)); - mLastSkippedFrames = 60 - mLastFrameRate; - } - } - mLastFrameTimeNanos = frameTimeNanos; - Choreographer.getInstance().postFrameCallback(this); - writeFpsDataIntoFile(); - } - }; + private Handler mMainHandler = new Handler(Looper.getMainLooper()); + private FrameRateRunnable mRateRunnable = new FrameRateRunnable(); private void executeCpuData() { LogHelper.d(TAG, "current thread name is ==" + Thread.currentThread().getName()); @@ -178,7 +162,6 @@ public class PerformanceDataManager { mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { mAboveAndroidO = true; - mPackageName = context.getPackageName(); } if (mHandlerThread == null) { mHandlerThread = new HandlerThread("handler-thread"); @@ -215,12 +198,14 @@ public class PerformanceDataManager { @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public void startMonitorFrameInfo() { - Choreographer.getInstance().postFrameCallback(mFrameCallback); + mMainHandler.postDelayed(mRateRunnable, DateUtils.SECOND_IN_MILLIS); + Choreographer.getInstance().postFrameCallback(mRateRunnable); } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public void stopMonitorFrameInfo() { - Choreographer.getInstance().removeFrameCallback(mFrameCallback); + Choreographer.getInstance().removeFrameCallback(mRateRunnable); + mMainHandler.removeCallbacks(mRateRunnable); } public void startMonitorCPUInfo() { @@ -467,4 +452,26 @@ public class PerformanceDataManager { public float getMaxMemory() { return mMaxMemory; } + + private class FrameRateRunnable implements Runnable, Choreographer.FrameCallback { + private int totalFramesPerSecond; + + @Override + public void run() { + mLastFrameRate = totalFramesPerSecond; + if (mLastFrameRate > MAX_FRAME_RATE) { + mLastFrameRate = MAX_FRAME_RATE; + } + mLastSkippedFrames = MAX_FRAME_RATE - mLastFrameRate; + totalFramesPerSecond = 0; + mMainHandler.postDelayed(this, DateUtils.SECOND_IN_MILLIS); + } + + @Override + public void doFrame(long frameTimeNanos) { + totalFramesPerSecond++; + Choreographer.getInstance().postFrameCallback(this); + writeFpsDataIntoFile(); + } + } } diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureFragment.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureFragment.java index 0b1d0775..4437b9fc 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureFragment.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureFragment.java @@ -15,6 +15,10 @@ import com.didichuxing.doraemonkit.ui.crash.CrashCaptureAdapter; import com.didichuxing.doraemonkit.ui.widget.titlebar.TitleBar; import java.io.File; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; public class CrashCaptureFragment extends BaseFragment { @@ -46,8 +50,15 @@ public class CrashCaptureFragment extends BaseFragment { File file = new File(CrashHandlerManager.getInstance().getFilePath()); if (file.exists()) { ListView crash = findViewById(R.id.lv_crash); - final File[] listFiles = file.listFiles(); - if (listFiles != null && listFiles.length != 0) { + final List listFiles = Arrays.asList(file.listFiles()); + if (listFiles != null && listFiles.size() != 0) { + Collections.sort(listFiles, new Comparator() { + @Override + public int compare(File lhs, File rhs) { + return Long.valueOf(rhs.lastModified()) + .compareTo(lhs.lastModified()); + } + }); crash.setAdapter(new CrashCaptureAdapter(listFiles)); } else { Toast.makeText(getContext(), R.string.dk_crash_capture_no_record, Toast.LENGTH_SHORT).show(); @@ -56,7 +67,7 @@ public class CrashCaptureFragment extends BaseFragment { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Bundle bundle = new Bundle(); - File listFile = listFiles[position]; + File listFile = listFiles.get(position); bundle.putSerializable(BundleKey.FILE_KEY, listFile); showContent(CrashDetailFragment.class, bundle); } diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashDetailFragment.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashDetailFragment.java index 39868945..1ffeb7d0 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashDetailFragment.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashDetailFragment.java @@ -59,6 +59,7 @@ public class CrashDetailFragment extends BaseFragment { String line; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); + stringBuilder.append("\n"); } inputStreamReader.close(); diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashHandlerManager.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashHandlerManager.java index 51c90101..24c150de 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashHandlerManager.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashHandlerManager.java @@ -155,7 +155,7 @@ public class CrashHandlerManager implements Thread.UncaughtExceptionHandler { String value = entry.getValue(); sb.append(key + "=" + value + "\n"); } - + sb.append("\n"); Writer writer = new StringWriter(); PrintWriter printWriter = new PrintWriter(writer); ex.printStackTrace(printWriter); diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/MonitorDataUploadFragment.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/MonitorDataUploadFragment.java index fbd2f1ee..a22af85e 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/MonitorDataUploadFragment.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/custom/MonitorDataUploadFragment.java @@ -5,11 +5,8 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.text.Editable; import android.text.TextUtils; -import android.text.TextWatcher; import android.view.View; -import android.widget.EditText; import android.widget.TextView; import com.didichuxing.doraemonkit.R; diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/aspect/AopUtils.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/aspect/AopUtils.java index d4975332..09de1293 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/aspect/AopUtils.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/aspect/AopUtils.java @@ -11,6 +11,7 @@ import java.net.URLConnection; import javax.net.ssl.HttpsURLConnection; +import okhttp3.Interceptor; import okhttp3.OkHttpClient; /** @@ -31,6 +32,12 @@ public class AopUtils { } public static void addInterceptor(OkHttpClient.Builder builder) { + // 判断当前是否已经添加了拦截器,如果已添加则返回 + for (Interceptor interceptor : builder.interceptors()) { + if (interceptor instanceof DoraemonInterceptor) { + return; + } + } builder.addNetworkInterceptor(new DoraemonWeakNetworkInterceptor()) .addInterceptor(new DoraemonInterceptor()); } diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/aspect/OkHttpAspect.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/aspect/OkHttpAspect.java index 1e4e7f98..d5b966d5 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/aspect/OkHttpAspect.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/network/aspect/OkHttpAspect.java @@ -12,8 +12,6 @@ public class OkHttpAspect { @After("execution(okhttp3.OkHttpClient.Builder.new(..))") public void addInterceptor(JoinPoint joinPoint) { - if (joinPoint.getArgs() != null && joinPoint.getArgs().length > 0 && joinPoint.getArgs()[0] instanceof OkHttpClient) { - AopUtils.addInterceptor((OkHttpClient.Builder) joinPoint.getTarget()); - } + AopUtils.addInterceptor((OkHttpClient.Builder) joinPoint.getTarget()); } } \ No newline at end of file diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/ui/crash/CrashCaptureAdapter.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/ui/crash/CrashCaptureAdapter.java index 3f9e6ff3..1c97f68f 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/ui/crash/CrashCaptureAdapter.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/ui/crash/CrashCaptureAdapter.java @@ -9,22 +9,23 @@ import android.widget.TextView; import com.didichuxing.doraemonkit.R; import java.io.File; +import java.util.List; public class CrashCaptureAdapter extends BaseAdapter { - private File[] files; + private List files; - public CrashCaptureAdapter(File[] files) { + public CrashCaptureAdapter(List files) { this.files = files; } @Override public int getCount() { - return files.length; + return files.size(); } @Override public Object getItem(int position) { - return files[position]; + return files.get(position); } @Override @@ -42,7 +43,7 @@ public class CrashCaptureAdapter extends BaseAdapter { } else { viewHolder = (ViewHolder) convertView.getTag(); } - viewHolder.setData(files[position].getName()); + viewHolder.setData(files.get(position).getName()); return convertView; } diff --git a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/DoraemonStatisticsUtil.java b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/DoraemonStatisticsUtil.java index 104ba261..69087bd4 100644 --- a/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/DoraemonStatisticsUtil.java +++ b/Android/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/DoraemonStatisticsUtil.java @@ -38,7 +38,7 @@ public class DoraemonStatisticsUtil { try { jsonObject.put("appId", appId); jsonObject.put("appName", appName); - jsonObject.put("version", "1.1.6"); + jsonObject.put("version", "1.1.7"); jsonObject.put("type", type); jsonObject.put("from", from); } catch (JSONException e) { diff --git a/Android/doraemonkit/src/main/res/drawable-xxhdpi/dk_weak_network.png b/Android/doraemonkit/src/main/res/drawable-xxhdpi/dk_weak_network.png index 071967179594594e7f332b05db691ca882cffdcc..ff49738281e41837ad7fdd5f7a396d3dbf77a1f9 100644 GIT binary patch literal 7460 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 diff --git a/Android/doraemonkit/src/main/res/layout/dk_fragment_block_list.xml b/Android/doraemonkit/src/main/res/layout/dk_fragment_block_list.xml index 511533bb..64c6a7a3 100644 --- a/Android/doraemonkit/src/main/res/layout/dk_fragment_block_list.xml +++ b/Android/doraemonkit/src/main/res/layout/dk_fragment_block_list.xml @@ -36,6 +36,7 @@ android:layout_height="match_parent" android:layout_gravity="top|left" android:clickable="true" + android:textSize="@dimen/dk_font_size_14" android:gravity="left" android:visibility="gone"/> diff --git a/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_capture.xml b/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_capture.xml index 365b4319..2d3fb90f 100644 --- a/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_capture.xml +++ b/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_capture.xml @@ -1,9 +1,10 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:background="@color/dk_color_FFFFFF" + android:layout_height="match_parent" + android:orientation="vertical"> + app:dkTitle="@string/dk_crash_capture_summary_title"/> + + + android:background="@android:color/white"/> diff --git a/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_capture_main.xml b/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_capture_main.xml index d19e87d8..a01c186f 100644 --- a/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_capture_main.xml +++ b/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_capture_main.xml @@ -1,19 +1,20 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/dk_color_FFFFFF" + android:orientation="vertical"> + app:dkTitle="@string/dk_kit_crash"/> + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_detail_info.xml b/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_detail_info.xml index bbf60203..ac4fd1c1 100644 --- a/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_detail_info.xml +++ b/Android/doraemonkit/src/main/res/layout/dk_fragment_crash_detail_info.xml @@ -17,14 +17,15 @@ app:dkLeftIcon="@drawable/dk_title_back" app:dkLeftText="@string/dk_back" app:dkTitle="@string/dk_crash_capture_summary_title" /> - + + android:textSize="@dimen/dk_font_size_14" /> diff --git a/Android/doraemonkit/src/main/res/layout/dk_fragment_gps_mock.xml b/Android/doraemonkit/src/main/res/layout/dk_fragment_gps_mock.xml index 46b3f209..942df27a 100644 --- a/Android/doraemonkit/src/main/res/layout/dk_fragment_gps_mock.xml +++ b/Android/doraemonkit/src/main/res/layout/dk_fragment_gps_mock.xml @@ -2,7 +2,8 @@ + android:background="@color/dk_color_FFFFFF" + android:layout_height="match_parent" > + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/dk_color_FFFFFF" + android:orientation="vertical"> + app:dkIcon="@drawable/dk_close_icon_big"/> + android:layout_height="wrap_content"/> + android:layout_height="12dp" + android:background="@color/dk_color_F5F6F7"/> + android:layout_height="match_parent" + android:gravity="bottom|center_horizontal" + android:orientation="vertical"> + android:text="@string/dk_platform_monitor_data_button"/> diff --git a/Android/doraemonkit/src/main/res/layout/dk_fragment_parameter.xml b/Android/doraemonkit/src/main/res/layout/dk_fragment_parameter.xml index b4539773..ee4df5a7 100644 --- a/Android/doraemonkit/src/main/res/layout/dk_fragment_parameter.xml +++ b/Android/doraemonkit/src/main/res/layout/dk_fragment_parameter.xml @@ -1,18 +1,19 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/dk_color_FFFFFF" + android:orientation="vertical"> + app:dkIcon="@drawable/dk_close_icon_big"/> + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/Android/doraemonkit/src/main/res/layout/dk_fragment_web_door.xml b/Android/doraemonkit/src/main/res/layout/dk_fragment_web_door.xml index c74de018..28c4f8a8 100644 --- a/Android/doraemonkit/src/main/res/layout/dk_fragment_web_door.xml +++ b/Android/doraemonkit/src/main/res/layout/dk_fragment_web_door.xml @@ -13,7 +13,6 @@ app:dkIcon="@drawable/dk_close_icon_big" app:dkTitle="@string/dk_kit_web_door" /> - + android:id="@+id/tv_crash_item" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:drawableRight="@drawable/dk_more_icon" + android:padding="@dimen/dk_dp_15" + android:textColor="@color/dk_color_333333" + android:textSize="@dimen/dk_font_size_14"/> diff --git a/Android/doraemonkit/src/main/res/values/strings.xml b/Android/doraemonkit/src/main/res/values/strings.xml index b5cec38a..ac5ebc63 100644 --- a/Android/doraemonkit/src/main/res/values/strings.xml +++ b/Android/doraemonkit/src/main/res/values/strings.xml @@ -160,7 +160,7 @@ 位置:左%1$d 右%2$d 上%3$d 下%4$d - 请进行授权才可以使用改功能 + 请进行授权才可以使用该功能 //启动、跳转耗时 Activity跳转耗时 查看记录 diff --git a/Android/doraemonkit/upload.gradle b/Android/doraemonkit/upload.gradle index 0bc70790..ccc6ee5b 100644 --- a/Android/doraemonkit/upload.gradle +++ b/Android/doraemonkit/upload.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.novoda.bintray-release' publish { def groupProjectID = 'com.didichuxing.doraemonkit' def artifactProjectID = 'doraemonkit' - def publishVersionID = '1.1.6' + def publishVersionID = '1.1.7' userOrg = 'doraemonkit' repoName = 'DoraemonKit' -- GitLab