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;*/ }