release ICL02Sport_V44_202307021108_release.apk c49
authorsnickersun <snickersun@qq.com>
Sun, 2 Jul 2023 03:16:01 +0000 (11:16 +0800)
committersnickersun <snickersun@qq.com>
Sun, 2 Jul 2023 03:16:01 +0000 (11:16 +0800)
计步适配mt2 workservice ,修复日志记录

18 files changed:
app/build.gradle
app/libs/ICLoger-release.aar [deleted file]
app/libs/android-logging-log4j-1.0.3.jar [new file with mode: 0644]
app/libs/ftp4j-1.7.2.jar [new file with mode: 0644]
app/libs/log4j-1.2.17.jar [new file with mode: 0644]
app/libs/okio-2.4.3.jar [new file with mode: 0644]
app/release/ICL02Sport_V44_202307021108_release.apk [new file with mode: 0644]
app/release/output.json
app/src/main/java/com/ic/sport/App.java
app/src/main/java/com/ic/sport/PedometerActivity.java
app/src/main/java/com/ic/sport/fragment/pedometer/PedMainFragment.java
app/src/main/java/com/ic/sport/fragment/pedometer/PedSetupDialogFragment.java
app/src/main/java/com/ic/sport/model/PedometerModel.java
app/src/main/java/com/ic/sport/presenter/PedometerPresenter.java
app/src/main/java/com/ic/sport/util/CrashHandler.java [new file with mode: 0644]
app/src/main/java/com/ic/sport/util/ICLogger.java [new file with mode: 0644]
app/src/main/java/com/ic/sport/util/IcLog.java
app/version_code.properties

index 66cf261..2113f7e 100644 (file)
@@ -137,6 +137,8 @@ dependencies {
 
     implementation 'androidx.viewpager2:viewpager2:1.0.0'
 
-    implementation files('libs/ICLoger-release.aar')
-
+    implementation files('libs/android-logging-log4j-1.0.3.jar',
+            'libs/ftp4j-1.7.2.jar',
+            'libs/log4j-1.2.17.jar',
+            'libs/okio-2.4.3.jar')
 }
diff --git a/app/libs/ICLoger-release.aar b/app/libs/ICLoger-release.aar
deleted file mode 100644 (file)
index ad31ae2..0000000
Binary files a/app/libs/ICLoger-release.aar and /dev/null differ
diff --git a/app/libs/android-logging-log4j-1.0.3.jar b/app/libs/android-logging-log4j-1.0.3.jar
new file mode 100644 (file)
index 0000000..7d4146f
Binary files /dev/null and b/app/libs/android-logging-log4j-1.0.3.jar differ
diff --git a/app/libs/ftp4j-1.7.2.jar b/app/libs/ftp4j-1.7.2.jar
new file mode 100644 (file)
index 0000000..fca26ec
Binary files /dev/null and b/app/libs/ftp4j-1.7.2.jar differ
diff --git a/app/libs/log4j-1.2.17.jar b/app/libs/log4j-1.2.17.jar
new file mode 100644 (file)
index 0000000..068867e
Binary files /dev/null and b/app/libs/log4j-1.2.17.jar differ
diff --git a/app/libs/okio-2.4.3.jar b/app/libs/okio-2.4.3.jar
new file mode 100644 (file)
index 0000000..6289cf6
Binary files /dev/null and b/app/libs/okio-2.4.3.jar differ
diff --git a/app/release/ICL02Sport_V44_202307021108_release.apk b/app/release/ICL02Sport_V44_202307021108_release.apk
new file mode 100644 (file)
index 0000000..4054855
Binary files /dev/null and b/app/release/ICL02Sport_V44_202307021108_release.apk differ
index f6bea12..495d44f 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":21,"versionName":"202012040920","enabled":true,"outputFile":"ICL02Hardware_V21_202012040920_release.apk","fullName":"release","baseName":"release"},"path":"ICL02Hardware_V21_202012040920_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":44,"versionName":"202307021108","enabled":true,"outputFile":"ICL02Sport_V44_202307021108_release.apk","fullName":"release","baseName":"release"},"path":"ICL02Sport_V44_202307021108_release.apk","properties":{}}]
\ No newline at end of file
index 17c27d1..6cc3cad 100644 (file)
@@ -2,8 +2,8 @@ package com.ic.sport;
 
 import android.app.Application;
 
-import com.ic.iclooger.CrashHandler;
-import com.ic.iclooger.ICLogger;
+import com.ic.sport.util.CrashHandler;
+import com.ic.sport.util.ICLogger;
 import com.ic.sport.util.IcLog;
 import com.jakewharton.threetenabp.AndroidThreeTen;
 
index b830e2d..f5d051d 100644 (file)
@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.viewpager2.widget.ViewPager2;
 
+import com.ic.sport.util.ICLogger;
 import com.ic.sport.adapter.FragmentAdapter;
 import com.ic.sport.adapter.IndicatorAdapter;
 import com.ic.sport.fragment.pedometer.PedMainFragment;
index bc2aacf..3d17e13 100644 (file)
@@ -15,7 +15,7 @@ import android.widget.TextView;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
 
-import com.ic.iclooger.ICLogger;
+import com.ic.sport.util.ICLogger;
 import com.ic.sport.App;
 import com.ic.sport.R;
 import com.ic.sport.databinding.FragmentPedMainBinding;
index 051aab9..8a6f337 100644 (file)
@@ -15,7 +15,7 @@ import androidx.annotation.Nullable;
 import androidx.collection.ArrayMap;
 import androidx.fragment.app.DialogFragment;
 
-import com.ic.iclooger.ICLogger;
+import com.ic.sport.util.ICLogger;
 import com.ic.sport.R;
 import com.ic.sport.util.SPUtils;
 import com.ic.sport.widget.picker.NumericWheelAdapter;
index 709cef9..d5e6902 100644 (file)
@@ -15,7 +15,7 @@ import androidx.lifecycle.ViewModel;
 import androidx.lifecycle.ViewModelProvider;
 
 import com.ic.aidl.ped.RecordParcelable;
-import com.ic.iclooger.ICLogger;
+import com.ic.sport.util.ICLogger;
 import com.ic.sport.presenter.PedometerPresenter;
 import com.ic.sport.util.IcLog;
 
index 1d27b21..b52fc93 100644 (file)
@@ -5,6 +5,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.os.IBinder;
+import android.os.Messenger;
 
 import androidx.lifecycle.LiveData;
 import androidx.lifecycle.MutableLiveData;
@@ -12,6 +13,7 @@ import androidx.lifecycle.MutableLiveData;
 import com.ic.aidl.ped.IPedAidlInterface;
 import com.ic.aidl.ped.IPedRemoteService;
 import com.ic.aidl.ped.RecordParcelable;
+import com.ic.sport.util.ICLogger;
 import com.ic.sport.util.IcLog;
 
 import java.util.Collections;
@@ -64,10 +66,21 @@ public class PedometerPresenter {
     };
 
     public void bindService() {
+
+        ComponentName componentName = new ComponentName(
+                "com.ic.work",
+                "com.ic.work.WorkService");
         Intent intent = new Intent("com.ic.action.WORK_SERVICE");
-        intent.setPackage("com.ic.work");
+        intent.setPackage("com.ic.sport");
+        intent.setComponent(componentName);
         intent.putExtra("target", "sport");
-        mContext.bindService(intent, connection, Context.BIND_AUTO_CREATE);
+        ICLogger.d("bindService "+intent);
+        if (mContext.bindService(intent, connection, Context.BIND_AUTO_CREATE))
+        {
+            ICLogger.d("bind success");
+        }else{
+            ICLogger.e("bind failed");
+        }
     }
 
     public void unbindService() {
diff --git a/app/src/main/java/com/ic/sport/util/CrashHandler.java b/app/src/main/java/com/ic/sport/util/CrashHandler.java
new file mode 100644 (file)
index 0000000..db00637
--- /dev/null
@@ -0,0 +1,214 @@
+package com.ic.sport.util;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Environment;
+import android.os.Looper;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.ic.sport.R;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2017/5/18.
+ */
+
+public class CrashHandler implements Thread.UncaughtExceptionHandler {
+    public static final String TAG = com.ic.sport.util.CrashHandler.class.getName();
+
+    // 系统默认的UncaughtException处理类
+    private Thread.UncaughtExceptionHandler mDefaultHandler;
+    // CrashHandler实例
+    private static com.ic.sport.util.CrashHandler INSTANCE = new com.ic.sport.util.CrashHandler();
+    // 程序的Context对象
+    private Context mContext;
+    // 用来存储设备信息和异常信息
+    private Map<String, String> infos = new HashMap<String, String>();
+    // 用于格式化日期,作为日志文件名的一部分
+    private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS", Locale.getDefault());
+    private DateFormat dateFormatDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
+
+    /**
+     * 保证只有一个CrashHandler实例
+     */
+    private CrashHandler() {
+    }
+
+    /**
+     * 获取CrashHandler实例 ,单例模式
+     */
+    public static com.ic.sport.util.CrashHandler getInstance() {
+        return INSTANCE;
+    }
+
+    /**
+     * 初始化
+     *
+     * @param context
+     * @param string
+     */
+    public void init(Context context, String string) {
+        mContext = context;
+        // 获取系统默认的UncaughtException处理器
+        mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
+        // 设置该CrashHandler为程序的默认处理器
+        Thread.setDefaultUncaughtExceptionHandler(this);
+    }
+
+    /**
+     * 当UncaughtException发生时会转入该函数来处理
+     */
+    @Override
+    public void uncaughtException(Thread thread, Throwable ex) {
+        if (!handleException(ex) && mDefaultHandler != null) {
+            // 如果用户没有处理则让系统默认的异常处理器来处理
+            mDefaultHandler.uncaughtException(thread, ex);
+        } else {
+            try {
+                Thread.sleep(3000);
+            } catch (InterruptedException e) {
+//                Log.e(TAG, "error : " + e);
+                e.printStackTrace();
+            }
+        }
+
+        // 退出程序
+        ex.printStackTrace();
+        android.os.Process.killProcess(android.os.Process.myPid());
+        System.exit(1);
+    }
+
+    /**
+     * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
+     *
+     * @param ex
+     * @return true:如果处理了该异常信息;否则返回false.
+     */
+    private boolean handleException(Throwable ex) {
+        if (ex == null) {
+            return false;
+        }
+        // 使用Toast来显示异常信息
+        new Thread() {
+            @Override
+            public void run() {
+                Looper.prepare();
+                if (mContext != null) {
+                    Toast.makeText(mContext, R.string.program_abnormal, Toast.LENGTH_LONG)
+                            .show();
+                    Looper.loop();
+                }
+            }
+        }.start();
+        // 收集设备参数信息
+        collectDeviceInfo(mContext);
+        // 保存日志文件
+        saveCrashInfo2File(ex);
+        return true;
+    }
+
+    /**
+     * 收集设备参数信息
+     *
+     * @param ctx
+     */
+    public void collectDeviceInfo(Context ctx) {
+        infos.clear();
+        infos.put("===", " PackageInfo ===");
+        try {
+            PackageManager pm = ctx.getPackageManager();
+            PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(), PackageManager.GET_ACTIVITIES);
+
+            if (pi != null) {
+                String versionName = pi.versionName;
+                String versionCode = pi.versionCode + "";
+                infos.put("versionName", versionName);
+                infos.put("versionCode", versionCode);
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(TAG, "an error occured when collect package info " + e);
+        }
+
+        infos.put("===", " Build ===");
+        Field[] fields = Build.class.getDeclaredFields();
+        for (Field field : fields) {
+            try {
+                field.setAccessible(true);
+                infos.put(field.getName(), field.get(null).toString());
+                Log.d(TAG, field.getName() + ":" + field.get(null));
+            } catch (Exception e) {
+                Log.e(TAG, "an error occured when collect crash info," + e);
+            }
+        }
+    }
+
+    /**
+     * 保存错误信息到文件中
+     *
+     * @param ex
+     * @return 返回文件名称, 便于将文件传送到服务器
+     */
+    private String saveCrashInfo2File(Throwable ex) {
+
+        String time = formatter.format(new Date());
+        StringBuilder sb = new StringBuilder();
+        sb.append("=== ").append(time).append(" ===\n");
+
+        Writer writer = new StringWriter();
+        PrintWriter printWriter = new PrintWriter(writer);
+        ex.printStackTrace(printWriter);
+//        ex.printStackTrace();
+        Throwable cause = ex.getCause();
+        while (cause != null) {
+            cause.printStackTrace(printWriter);
+            cause = cause.getCause();
+//            cause.printStackTrace();
+        }
+        printWriter.close();
+        String result = writer.toString();
+        sb.append(result);
+        sb.append("\n");
+
+        sb.append("--- DEVICE INFO ---\n");
+        for (Map.Entry<String, String> entry : infos.entrySet()) {
+            String key = entry.getKey();
+            String value = entry.getValue();
+            sb.append(key).append("=").append(value).append("\n");
+        }
+        sb.append("\n\n");
+
+        try {
+            String fileName = "IcWorkService-" + dateFormatDate.format(new Date()) + ".log";
+            if (Environment.getExternalStorageState().equals(
+                    Environment.MEDIA_MOUNTED)) {
+                File dir = new File(Environment.getExternalStorageDirectory().getPath(), "Android/ic/crash/IcWorkService");
+                String path = dir.getPath();
+                if (!dir.exists()) {
+                    dir.mkdirs();
+                }
+                FileOutputStream fos = new FileOutputStream(new File(path, fileName), true);
+                fos.write(sb.toString().getBytes());
+                fos.close();
+            }
+            return fileName;
+        } catch (Exception e) {
+            Log.e(TAG, "an error occured while writing file...," + e);
+        }
+        return null;
+    }
+}
diff --git a/app/src/main/java/com/ic/sport/util/ICLogger.java b/app/src/main/java/com/ic/sport/util/ICLogger.java
new file mode 100644 (file)
index 0000000..424387c
--- /dev/null
@@ -0,0 +1,267 @@
+package com.ic.sport.util;
+
+import android.content.Context;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.RollingFileAppender;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+import de.mindpipe.android.logging.log4j.LogConfigurator;
+
+import static org.apache.log4j.Logger.getLogger;
+
+
+public class ICLogger {
+
+    private static boolean isInitConfig = false;
+    private static Context mContext = null;
+
+    private static Logger Log = null;
+    //  private static java.util.logging.Logger originLog= getLogger(ICLogger.class.getSimpleName());
+    private static final boolean DEBUG = true;    //BuildConfig.DEBUG;
+
+    public static void setContext(Context context) {
+        mContext = context;
+    }
+
+    private static String getFunctionName() {
+        StackTraceElement[] currentStack = Thread.currentThread().getStackTrace();
+        if (currentStack == null) {
+            return null;
+        } else {
+            int stackLen = currentStack.length;
+
+            for (int i = 0; i < stackLen; ++i) {
+                StackTraceElement stackElement = currentStack[i];
+                if (!stackElement.isNativeMethod() &&
+                        !stackElement.getClassName().equals(Thread.class.getName()) &&
+                        !stackElement.getClassName().equals(com.ic.sport.util.ICLogger.class.getName())) {
+                    StringBuilder sb = new StringBuilder();
+                    sb.append("[ ");
+                    sb.append(Thread.currentThread().getName());
+                    sb.append(": ");
+                    sb.append(stackElement.getFileName());
+                    sb.append(":");
+                    sb.append(stackElement.getLineNumber());
+                    sb.append(" ");
+                    sb.append(stackElement.getMethodName());
+                    sb.append(" ]");
+                    return sb.toString();
+                }
+            }
+
+            return null;
+        }
+    }
+
+    /**
+     * 初始化与配置Logger   Log4j
+     * 日志信息格式中符号所代表的含义
+     * (1)-X号: X信息输出时左对齐。
+     * (2)%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
+     * (3)%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921。
+     * (4)%r: 输出自应用启动到输出该log信息耗费的毫秒数。
+     * (5)%c: 输出日志信息所属的类目,通常就是所在类的全名。
+     * (6)%t: 输出产生该日志事件的线程名。
+     * (7)%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)。
+     * (8)%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
+     * (9)%%: 输出一个"%"字符。
+     * (10)%F: 输出日志消息产生时所在的文件名称。
+     * (11)%L: 输出代码中的行号。
+     * (12)%m: 输出代码中指定的消息,产生的日志具体信息。
+     * (13)%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行。
+     * 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
+     * (1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
+     * (2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
+     * (3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
+     * (4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
+     */
+    private static void initConfig() {
+        if (!isInitConfig) {
+
+            LogConfigurator logConfigurator = new LogConfigurator();
+
+            String filename = StorageUtils.getExternalStorageLogDir() + File.separator + "ICSportlog.txt";
+            logConfigurator.setFileName(filename);                // 日志存储路径,如果该路径没有会自动创建文件
+            logConfigurator.setRootLevel(Level.ALL);
+
+            logConfigurator.setLevel("log", Level.ALL);
+    //        logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");// 设置文件输出模式
+            logConfigurator.setFilePattern("%d %m%n ");// 设置文件输出模式
+//        02-29 16:28:38.195 4629-4658/com.enqualcomm.support E/com.enqualcomm.support.utils.ICLogger:
+            logConfigurator.setMaxBackupSize(2); // 设置最大备份数量
+            logConfigurator.setMaxFileSize(1024 * 1024 * 20);// 设置最大文件大小  20MB
+            logConfigurator.setImmediateFlush(true);// 设置是否立即刷新
+            logConfigurator.setUseFileAppender(true); // 设置用户文件输出器
+            logConfigurator.setInternalDebugging(false); //控制console是否输出
+            logConfigurator.setUseLogCatAppender(true);
+            logConfigurator.setLogCatPattern("%m%n");
+            logConfigurator.configure();// 设置提交
+
+
+//        String logfilelist[]={"Log","GPS","Nmea","APILog","alarmCycle","Battery","LBS"};
+
+            //Log 和log目前是同一个配置
+            Log = getLogger("log");
+            //Log.info("init Logger " + Log.getName());
+            Log.addAppender( getRollingFileAppender("log","%d %m%n "));
+            Log.info("init Logger "+Log.getName()+" "+((RollingFileAppender)Log.getAppender("log")).getFile());
+            isInitConfig = true;
+        }
+    }
+
+    public static void logRAWtoFile(String filename, String msg) {
+        Log.info(msg);
+    }
+
+    public static void logToFile(String filename, String msg) {
+        Log.info(msg);
+    }
+
+    private static RollingFileAppender getRollingFileAppender(String name, String layoutpattern) {
+        PatternLayout fileLayout = new PatternLayout(layoutpattern);
+        String filename = StorageUtils.getExternalStorageLogDir() + File.separator + "IcSport"+name + ".txt";
+        RollingFileAppender rollingFileAppender = null;
+        try {
+            rollingFileAppender = new RollingFileAppender(fileLayout, filename);
+        } catch (IOException e) {
+            e.printStackTrace();
+            com.ic.sport.util.ICLogger.e(e.getMessage(), e);
+            return null;
+        }
+        rollingFileAppender.setName(name);
+        rollingFileAppender.setMaxBackupIndex(2);  //最多3个备份文件
+        rollingFileAppender.setMaximumFileSize(20 * 1024 * 1024); //10M 大小
+        rollingFileAppender.setImmediateFlush(true);
+
+        return rollingFileAppender;
+    }
+
+    public static void v(String msg) {
+        initConfig();
+        if (Log != null)
+            Log.debug(buildMessage(msg));
+    }
+
+    public static void v(String msg, Throwable thr) {
+        initConfig();
+        if (Log != null)
+            Log.debug(buildMessage(msg), thr);
+    }
+
+    public static void d(String msg) {
+        initConfig();
+        if (Log != null)
+            Log.debug(buildMessage(msg));
+    }
+
+    public static void d(String msg, Throwable thr) {
+        initConfig();
+        if (Log != null)
+            Log.debug(buildMessage(msg), thr);
+    }
+
+    public static void i(String msg) {
+        initConfig();
+        if (Log != null)
+            Log.info(buildMessage(msg));
+    }
+
+    public static void i(String msg, Throwable thr) {
+        initConfig();
+        if (Log != null)
+            Log.info(buildMessage(msg), thr);
+    }
+
+    public static void w(String msg) {
+        initConfig();
+        if (Log != null)
+            Log.warn(buildMessage(msg));
+    }
+
+    public static void w(String msg, Throwable thr) {
+        initConfig();
+        if (Log != null)
+            Log.warn(buildMessage(msg), thr);
+    }
+
+    public static void w(Throwable thr) {
+        initConfig();
+        if (Log != null)
+            Log.warn(buildMessage(""), thr);
+    }
+
+    public static void e(String msg) {
+        initConfig();
+        if (Log != null)
+            Log.error(buildMessage(msg));
+    }
+
+    public static void e(String msg, Throwable thr) {
+        initConfig();
+        if (Log != null)
+            Log.error(buildMessage(msg), thr);
+    }
+
+    public static void PrintExceptionStackTrace(Exception e) {
+
+        StringBuffer sb = new StringBuffer();
+        sb.append(e.getMessage()).append("\n");
+        e.printStackTrace(new PrintStream(new OutputStream() {
+            @Override
+            public void write(int b) throws IOException {
+                sb.append((char) b);
+            }
+        }));
+        i(sb.toString());
+    }
+
+    /**
+     * 生成消息
+     *
+     * @param msg
+     * @return
+     */
+    protected static String buildMessage(String msg) {
+        initConfig();
+        if (DEBUG && msg != null) {
+            String var1 = getFunctionName();
+            if (var1 != null) {
+                StringBuilder sb = new StringBuilder();
+                sb.append(var1);
+                sb.append(" - ");
+                sb.append(msg);
+                return sb.toString();
+            } else {
+                return "functionName is null";
+            }
+        } else {
+            return "msg is null";
+        }
+    }
+
+    public static void log(String TAG, String msg) {
+        if (DEBUG) {
+            if (Log != null) Log.debug(TAG + " " + msg);
+
+        }
+    }
+
+    public static void log(String TAG, String funcName, String msg) {
+        if (DEBUG) {
+            if (Log != null)
+                Log.debug(TAG + " [" + funcName + "]" + msg);
+
+        }
+    }
+
+    public static void init(Context applicationContext, String icSport) {
+    }
+}
+
index cdc1671..0b37d06 100644 (file)
@@ -1,7 +1,4 @@
 package com.ic.sport.util;
-
-import com.ic.iclooger.ICLogger;
-
 /**
  * @author RyanLee
  * @date 2018/2/2
index 3a6edfd..22c74c3 100644 (file)
@@ -1,2 +1,2 @@
-#Fri Oct 29 16:44:19 CST 2021\r
-VERSION_CODE=43\r
+#Sun Jul 02 11:08:42 CST 2023\r
+VERSION_CODE=44\r