Android11.0(R) MTK user版本打开MtkLog功能

603 阅读3分钟

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