Как отключить все журналы [debugPrint ()] в сборке релиза во флаттере?

Я установил apk для сборки релиза на устройстве Android, но если я подключу это устройство к студии Android, я смогу увидеть все операторы Logs / debugPrint.

Есть ли способ отключить все логи?

12
0
5 992
2

Ответы 2

Вы можете назначить фиктивную функцию глобальной переменной debugPrint:

import 'package:flutter/material.dart';

main() {
  debugPrint = (String message, {int wrapWidth}) {};
}

И как мне проверить вариант сборки, чтобы я мог делать это только при компиляции для продакшена? Мне не нравится это решение: stackoverflow.com/questions/47438564/…, и я не хочу использовать такой пакет, как simple_preprocessor.

shadowsheep 25.03.2018 19:04

Я думаю, что связанный SO задает нам вопрос, как двигаться. Вы также можете создать сценарий сборки, который изменяет исходный файл перед вызовом flutter build ....

Günter Zöchbauer 25.03.2018 19:09

Не знаю, но спасибо. Я с нетерпением жду этого сценария нестандартной сборки. Если у вас уже есть ссылки, мы будем благодарны им;)

shadowsheep 25.03.2018 19:16

Вы можете использовать простой сценарий оболочки или сценарий bash. У меня есть проект, в котором я копирую другой файл Dart, содержащий некоторые значения конфигурации, которые импортируются куда-то на место перед сборкой. Таким образом, мне не нужно изменять содержимое файлов

Günter Zöchbauer 25.03.2018 19:20

Я проведу дополнительное исследование по этой теме. Может, я задам конкретный вопрос. А пока проголосовал за ваш ответ! ;)

shadowsheep 25.03.2018 19:29

Я объединил принятый ответ с идеей здесь и использовал его main.dart, чтобы везде отключить debugPrint.

const bool isProduction = bool.fromEnvironment('dart.vm.product');
void main() {
  if (isProduction) {      
      debugPrint = (String message, {int wrapWidth}) {};    
  } 
  runApp(
    MyApp()
  );
}

Ссылка, которую вы дали, не работает. Ошибка получения страницы не найдена.

K Pradeep Kumar Reddy 26.06.2020 22:44

я исправил ссылку. не знаю, что раньше пошло не так :(

Sebastian 29.06.2020 10:15

@Sebastian Я думаю, вы всегда проверяете bool kDebugMode / kReleaseMode, который является константой, предоставляемой фондом Flutter.

mortred95 16.12.2020 16:09

Другие вопросы по теме