From 2ba5b52f8df8531ae35cabb09e79881cccd51a26 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Sat, 21 Dec 2019 18:17:14 +0100 Subject: [PATCH] Move fetch application logs to its own plugin Maybe it will be useful to others. This way we're also closer to removing almost all java / objective-c custom code. --- .../io/gitjournal/gitjournal/LogDumper.java | 29 ------------------- .../gitjournal/gitjournal/MainActivity.java | 16 +--------- lib/utils.dart | 8 ----- lib/widgets/app_drawer.dart | 3 +- pubspec.lock | 7 +++++ pubspec.yaml | 3 +- 6 files changed, 12 insertions(+), 54 deletions(-) delete mode 100644 android/app/src/main/java/io/gitjournal/gitjournal/LogDumper.java diff --git a/android/app/src/main/java/io/gitjournal/gitjournal/LogDumper.java b/android/app/src/main/java/io/gitjournal/gitjournal/LogDumper.java deleted file mode 100644 index 165367f3..00000000 --- a/android/app/src/main/java/io/gitjournal/gitjournal/LogDumper.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.gitjournal.gitjournal; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStreamReader; -import java.io.PrintWriter; - -public class LogDumper { - public static void dumpLogs(String filePath) throws Exception { - File file = new File(filePath); - - // Truncate the existing file - PrintWriter pw = new PrintWriter(file); - pw.close(); - - FileOutputStream stream = new FileOutputStream(file, true); - - Process logcat = Runtime.getRuntime().exec(new String[]{"logcat", "-d"}); - BufferedReader br = new BufferedReader(new InputStreamReader(logcat.getInputStream()), 4 * 1024); - String line; - String separator = System.getProperty("line.separator"); - while ((line = br.readLine()) != null) { - stream.write(line.getBytes()); - stream.write(separator.getBytes()); - } - stream.close(); - } -} diff --git a/android/app/src/main/java/io/gitjournal/gitjournal/MainActivity.java b/android/app/src/main/java/io/gitjournal/gitjournal/MainActivity.java index 4bfa6d85..4935eea8 100644 --- a/android/app/src/main/java/io/gitjournal/gitjournal/MainActivity.java +++ b/android/app/src/main/java/io/gitjournal/gitjournal/MainActivity.java @@ -56,23 +56,9 @@ public class MainActivity extends FlutterActivity implements MethodCallHandler { if (call.method.equals("getBaseDirectory")) { result.success(filesDir); return; - } else if (call.method.equals("dumpAppLogs")) { - String filePath = filesDir + "/app-logs.txt"; - - try { - LogDumper.dumpLogs(filePath); - } catch (Exception e) { - e.printStackTrace(); - result.error("FAILED", e.toString(), null); - return; - } - - result.success(filePath); - return; } else if (call.method.equals("shouldEnableAnalytics")) { boolean shouldBe = true; - String testLabSetting = - Settings.System.getString(context.getContentResolver(), "firebase.test.lab"); + String testLabSetting = Settings.System.getString(context.getContentResolver(), "firebase.test.lab"); if ("true".equals(testLabSetting)) { shouldBe = false; } diff --git a/lib/utils.dart b/lib/utils.dart index a22fce0a..bd394903 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -34,14 +34,6 @@ Future shouldEnableAnalytics() async { } } -/// adb logcat -/// Returns the file path where the logs were dumped -Future dumpAppLogs() async { - const _platform = MethodChannel('gitjournal.io/git'); - final String logsFilePath = await _platform.invokeMethod('dumpAppLogs'); - return logsFilePath; -} - void showUndoDeleteSnackbar( BuildContext context, StateContainerState stateContainer, diff --git a/lib/widgets/app_drawer.dart b/lib/widgets/app_drawer.dart index 9831cb68..a4c3b286 100644 --- a/lib/widgets/app_drawer.dart +++ b/lib/widgets/app_drawer.dart @@ -6,6 +6,7 @@ import 'package:launch_review/launch_review.dart'; import 'package:share/share.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:page_transition/page_transition.dart'; +import 'package:fetch_app_logs/fetch_app_logs.dart'; import 'package:gitjournal/analytics.dart'; import 'package:gitjournal/state_container.dart'; @@ -163,7 +164,7 @@ class AppDrawer extends StatelessWidget { onTap: () async { var platform = Platform.operatingSystem; var versionText = await getVersionString(); - var appLogsFilePath = await dumpAppLogs(); + var appLogsFilePath = await FetchAppLogs.dumpAppLogsToFile(); final Email email = Email( body: diff --git a/pubspec.lock b/pubspec.lock index 91265be1..d243e0d5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -113,6 +113,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + fetch_app_logs: + dependency: "direct main" + description: + name: fetch_app_logs + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1" file: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index b6d3e184..fae4be6d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,7 +30,8 @@ dependencies: flutter_staggered_grid_view: ^0.3.0 page_transition: "^1.1.5" provider: ^3.2.0 - git_bindings: 0.0.2 + git_bindings: ^0.0.2 + fetch_app_logs: ^0.0.1 dev_dependencies: flutter_launcher_icons: "^0.7.2"