Parcourir la source

1.新增日志删除代码,超过一个月的日子删除

JaycePC il y a 1 mois
Parent
commit
1ed60508c6

+ 2 - 1
app/.gitignore

@@ -1 +1,2 @@
-/build
+/build
+/release

+ 1 - 1
app/build.gradle

@@ -12,7 +12,7 @@ android {
         //noinspection ExpiredTargetSdkVersion
         targetSdk 28
         versionCode 1
-        versionName "1.3"
+        versionName "1.4"
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }

+ 2 - 0
app/src/main/java/xn/huaxue/update/MainActivity.java

@@ -23,8 +23,10 @@ import com.blankj.utilcode.util.AppUtils;
 import com.blankj.utilcode.util.LogUtils;
 import com.blankj.utilcode.util.NetworkUtils;
 import com.blankj.utilcode.util.SPUtils;
+import com.blankj.utilcode.util.ShellUtils;
 import com.blankj.utilcode.util.ThreadUtils;
 import com.blankj.utilcode.util.ToastUtils;
+import com.blankj.utilcode.util.Utils;
 import com.hjq.permissions.OnPermissionCallback;
 import com.hjq.permissions.Permission;
 import com.hjq.permissions.XXPermissions;

+ 17 - 0
app/src/main/java/xn/huaxue/update/http/bean/response/UpdateTask.java

@@ -42,6 +42,23 @@ public class UpdateTask {
         private String versionName;
         private String startLaunchPackage;
         private boolean isForceUpdate;
+        private String appPackageName;
+
+        public boolean isForceUpdate() {
+            return isForceUpdate;
+        }
+
+        public void setForceUpdate(boolean forceUpdate) {
+            isForceUpdate = forceUpdate;
+        }
+
+        public String getAppPackageName() {
+            return appPackageName;
+        }
+
+        public void setAppPackageName(String appPackageName) {
+            this.appPackageName = appPackageName;
+        }
 
         public String getTaskId() {
             return taskId;

+ 14 - 2
app/src/main/java/xn/huaxue/update/receiver/TimeTickReceiver.java

@@ -19,6 +19,7 @@ import com.blankj.utilcode.util.LogUtils;
 import com.blankj.utilcode.util.SPUtils;
 import com.blankj.utilcode.util.ShellUtils;
 import com.blankj.utilcode.util.ThreadUtils;
+import com.blankj.utilcode.util.Utils;
 
 import org.json.JSONException;
 
@@ -73,8 +74,19 @@ public class TimeTickReceiver extends BroadcastReceiver {
                                     AsyncTask.execute(() -> {
                                         try {
                                             HttpTool.INSTANCE.updateCallBack(task.getTaskId(), task.getDeviceCode(), true, true);
-                                            Tool.INSTANCE.cmd("pm install -d -g " + apkPath + apkName);
-                                            Tool.INSTANCE.openApp(task.getStartLaunchPackage());
+                                            if (AppUtils.getAppPackageName().equals(task.getAppPackageName())) {
+                                                Tool.INSTANCE.cmd("pm install -d -g " + apkPath + apkName);
+                                                Tool.INSTANCE.openApp(task.getStartLaunchPackage());
+                                            } else {
+                                                ShellUtils.execCmdAsync("pm uninstall " + task.getAppPackageName(), true, new Utils.Consumer<ShellUtils.CommandResult>() {
+                                                    @Override
+                                                    public void accept(ShellUtils.CommandResult commandResult) {
+                                                        LogUtils.d(commandResult);
+                                                        Tool.INSTANCE.cmd("pm install -d -g " + apkPath + apkName);
+                                                        Tool.INSTANCE.openApp(task.getStartLaunchPackage());
+                                                    }
+                                                });
+                                            }
                                         } catch (IOException | JSONException e) {
                                             LogUtils.e(Log.getStackTraceString(e));
                                         }

+ 31 - 1
app/src/main/java/xn/huaxue/update/service/TaskService.java

@@ -21,10 +21,13 @@ import androidx.work.PeriodicWorkRequest;
 import androidx.work.WorkManager;
 
 import com.blankj.utilcode.util.ActivityUtils;
+import com.blankj.utilcode.util.AppUtils;
+import com.blankj.utilcode.util.FileUtils;
 import com.blankj.utilcode.util.LogUtils;
 import com.blankj.utilcode.util.NetworkUtils;
 import com.blankj.utilcode.util.SPUtils;
 import com.blankj.utilcode.util.ThreadUtils;
+import com.blankj.utilcode.util.TimeUtils;
 import com.hjq.permissions.OnPermissionCallback;
 import com.hjq.permissions.Permission;
 import com.hjq.permissions.XXPermissions;
@@ -35,7 +38,10 @@ import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 import org.json.JSONObject;
 
+import java.io.File;
+import java.text.SimpleDateFormat;
 import java.util.List;
+import java.util.Locale;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.TimeUnit;
 
@@ -69,7 +75,6 @@ public class TaskService extends Service {
         timeTickReceiver = new TimeTickReceiver();
         // 监听分钟广播
         registerReceiver(timeTickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
-
         requestPermission();
     }
 
@@ -222,5 +227,30 @@ public class TaskService extends Service {
 
     private void terminalAuth() {
         ThreadUtils.executeByCachedAtFixRate(simpleTask, ThreadLocalRandom.current().nextInt(10, 20), TimeUnit.SECONDS);
+        // 清理一个月前的log
+        ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<Object>() {
+            @Override
+            public Object doInBackground() throws Throwable {
+                List<File> fileList = FileUtils.listFilesInDir("/sdcard/logs/");
+                for (int i = 0; i < fileList.size(); i++) {
+                    File file = fileList.get(i);
+                    String fileName = file.getName();
+                    fileName = fileName.replace(AppUtils.getAppName() + "_", "");
+                    fileName = fileName.replace("_" + AppUtils.getAppPackageName(), "");
+                    fileName = fileName.replace(".txt", "");
+                    long fileTime = TimeUtils.string2Millis(fileName, new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()));
+                    long oneMonth = 30 * 86400 * 1000L;
+                    if ((System.currentTimeMillis() - fileTime) > oneMonth) {
+                        FileUtils.delete(file);
+                    }
+                }
+                return null;
+            }
+
+            @Override
+            public void onSuccess(Object result) {
+
+            }
+        });
     }
 }