MTKLog 功能很好用,在 userdebug 和 eng 版本中可以帮助我们分析问题。
今天来搞一下,在 User 版本中也启用这个功能。
修改清单
device/mediatek/system/common/mtklog/mtklog-config-bsp-eng.prop
device/mediatek/system/common/mtklog/mtklog-config-bsp-user.prop
device/mediatek/system/common/device.mk
device/mediatek/vendor/common/device.mk
vendor/mediatek/proprietary/packages/apps/EngineerMode/AndroidManifest.xml
vendor/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/EngineerModeReceiver.java
vendor/mediatek/proprietary/packages/apps/MTKLogger/Android.mk
vendor/mediatek/proprietary/packages/apps/MTKLogger/src/com/debug/loggerui/utils/Utils.java
vendor/mediatek/proprietary/external/NetworkLogD/netdiag/commandlistening.cpp
device/mediatek/system/common/mtklog/mtklog-config-bsp-eng.prop
device/mediatek/system/common/mtklog/mtklog-config-bsp-user.prop
@@ -1,5 +1,5 @@
# mtk log path can be set as system_data or device_storage or portable_storage
-mtklog_path = system_data
+mtklog_path = internal_sd
com.mediatek.log.mobile.customer = MTK_Internal
com.mediatek.log.mobile.AllMode = true
device/mediatek/system/common/device.mk
@@ -672,13 +672,13 @@ $(call inherit-product-if-exists, vendor/mediatek/common/device-vendor.mk)
# mtklog config
ifeq ($(strip $(MTK_BASIC_PACKAGE)), yes)
- ifeq ($(TARGET_BUILD_VARIANT),eng)
+ ifneq ($(filter $(TARGET_BUILD_VARIANT),eng userdebug user),)
PRODUCT_COPY_FILES += $(LOCAL_PATH)/mtklog/mtklog-config-basic-eng.prop:system/etc/mtklog-config.prop:mtk
else
PRODUCT_COPY_FILES += $(LOCAL_PATH)/mtklog/mtklog-config-basic-user.prop:system/etc/mtklog-config.prop:mtk
endif
else
- ifeq ($(TARGET_BUILD_VARIANT),eng)
+ ifneq ($(filter $(TARGET_BUILD_VARIANT),eng userdebug user),)
PRODUCT_COPY_FILES += $(LOCAL_PATH)/mtklog/mtklog-config-bsp-eng.prop:system/etc/mtklog-config.prop:mtk
else
PRODUCT_COPY_FILES += $(LOCAL_PATH)/mtklog/mtklog-config-bsp-user.prop:system/etc/mtklog-config.prop:mtk
@@ -2433,7 +2433,7 @@ ifneq ($(wildcard vendor/mediatek/internal/mtklog_enable),)
MSSI_HAVE_AEE_FEATURE = no
endif
# Case: Customer eng/userdebug load
-else ifneq ($(strip $(TARGET_BUILD_VARIANT)),user)
+else ifneq ($(strip $(TARGET_BUILD_VARIANT)),eng userdebug user)
PRODUCT_PACKAGES += log-handler
PRODUCT_PACKAGES += loghidlsysservice
@@ -3656,7 +3656,7 @@ ifeq ($(strip $(MSSI_MTK_ENGINEERMODE_APP)), yes)
PRODUCT_PACKAGES += libem_wifi_jni
PRODUCT_PACKAGES += libem_audio_jni
else
- ifneq ($(filter $(TARGET_BUILD_VARIANT),eng userdebug),)
+ ifneq ($(filter $(TARGET_BUILD_VARIANT),eng userdebug user),)
PRODUCT_PACKAGES += EngineerMode
PRODUCT_PACKAGES += libem_suppo
device/mediatek/vendor/common/device.mk
+++ b/alps/device/mediatek/vendor/common/device.mk
@@ -779,7 +779,7 @@ ifeq ($(strip $(MTK_ENGINEERMODE_APP)),yes)
DEVICE_MANIFEST_FILE += $(LOCAL_PATH)/project_manifest/manifest_em.xml
PRODUCT_PACKAGES += em_hidl
else
- ifneq ($(filter $(TARGET_BUILD_VARIANT),eng userdebug),)
+ ifneq ($(filter $(TARGET_BUILD_VARIANT),eng userdebug user),)
DEVICE_MANIFEST_FILE += $(LOCAL_PATH)/project_manifest/manifest_em.xml
PRODUCT_PACKAGES += em_hidl
endif
配置暗码进入 MTKLog app 界面
vendor/mediatek/proprietary/packages/apps/EngineerMode/AndroidManifest.xml
<data
android:host="3646633"
android:scheme="android_secret_code" />
+
+ <data
+ android:host="9527686"
+ android:scheme="android_secret_code" />
+
</intent-filter>
vendor/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/EngineerModeReceiver.java
@@ -39,6 +39,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.content.ComponentName;
/**
* Broadcast receiver for EM start secret code.
@@ -50,6 +51,11 @@ public final class EngineerModeReceiver extends BroadcastReceiver {
private static final String SECRET_CODE_ACTION
= "android.provider.Telephony.SECRET_CODE";
+ // process *#*#3646633#*#*
+ private final Uri mEmUri = Uri.parse("android_secret_code://05023646633");
+ // process *#*#9527686#*#* mtklog
+ private final Uri mMtklogUri1 = Uri.parse("android_secret_code://9527686");
+
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() == null) {
@@ -57,10 +63,24 @@ public final class EngineerModeReceiver extends BroadcastReceiver {
return;
}
if (intent.getAction().equals(SECRET_CODE_ACTION)) {
- Elog.i(TAG, "Receive secret code intent");
- Intent intentEm = new Intent(context, EngineerMode.class);
- intentEm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intentEm);
+ Uri uri = intent.getData();
+ Elog.i(TAG, "Receive secret code intent and uri is " + uri);
+ if (uri.equals(mEmUri))
+ {
+ Intent intentEm = new Intent(context, EngineerMode.class);
+ intentEm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intentEm);
+ }
+ else if(uri.equals(mMtklogUri1))
+ {
+ String packageName = "com.debug.loggerui";
+ String className = "com.debug.loggerui.MainActivity";
+ Intent intentEm = new Intent(Intent.ACTION_MAIN);
+ intentEm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ ComponentName cn = new ComponentName(packageName, className);
+ intentEm.setComponent(cn);
+ context.startActivity(intentEm);
+ }
}
}
}
vendor/mediatek/proprietary/packages/apps/MTKLogger/Android.mk
@@ -3,9 +3,9 @@ LOCAL_PATH:= $(call my-dir)
# Build DebugLoggerUI.apk
include $(CLEAR_VARS)
-ifeq ($(TARGET_BUILD_VARIANT), user)
-LOCAL_MANIFEST_FILE := user/AndroidManifest.xml
-endif
+#ifeq ($(TARGET_BUILD_VARIANT), user)
+#LOCAL_MANIFEST_FILE := user/AndroidManifest.xml
+#endif
LOCAL_MODULE_TAGS := optional
LOCAL_AAPT_INCLUDE_ALL_RESOURCES := true
修改 app 界面显示保存路径为 /sdcard
vendor/mediatek/proprietary/packages/apps/MTKLogger/src/com/debug/loggerui/utils/Utils.java
@@ -591,7 +591,7 @@ public class Utils {
public static final String LOG_PATH_TYPE_SYSTEM_DATA = "system_data";
public static final String LOG_PATH_TYPE_DEVICE_STORAGE = "device_storage";
public static final String LOG_PATH_TYPE_PORTABLE_STORAGE = "portable_storage";
- public static final String LOG_PATH_TYPE_DEFAULT = LOG_PATH_TYPE_SYSTEM_DATA;
+ public static final String LOG_PATH_TYPE_DEFAULT = LOG_PATH_TYPE_DEVICE_STORAGE;
public static final Map<String, Integer> LOG_PATH_TYPE_STRING_MAPS =
new HashMap<String, Integer>();
将 netlog 保存路径 /data 修改为 /sdcard
vendor/mediatek/proprietary/external/NetworkLogD/netdiag/commandlistening.cpp
@@ -179,7 +179,7 @@ bool commandlistening::isCustomerUserLoad() {
property_get("ro.build.type", buildtype, "user");
if (0 == strncmp("0",internal,strlen("0"))
&& 0 == strncmp("user",buildtype,strlen("userdebug"))) {
- result = true;
+ //result = true;//cczheng annotation
}
LOGD("isCustomerUserLoad()? %d,internal = %s,buildtype =%s",
result, internal, buildtype );
将 mobilelog 保存路径 /data 修改为 /sdcard
vendor/mediatek/proprietary/external/mobile_log_d/config.c
@@ -795,10 +795,11 @@ int update_sd_context(const char* path) {
}
int load_type() {
- char build_type[BUFFER_SIZE_128] = {0};
+ return 0;//cczheng annotation
+ /*char build_type[BUFFER_SIZE_128] = {0};
char internal_prpject[BUFFER_SIZE_128] = {0};
property_get("ro.build.type", build_type, "");
property_get("ro.vendor.mtklog_internal", internal_prpject, "");
if (strcmp(build_type, "user") != 0 || strcmp(internal_prpject, "1") == 0) return 0;
- return 1;
+ return 1;*/
}