Я установил apk для сборки релиза на устройстве Android, но если я подключу это устройство к студии Android, я смогу увидеть все операторы Logs / debugPrint.
Есть ли способ отключить все логи?
Вы можете назначить фиктивную функцию глобальной переменной debugPrint:
import 'package:flutter/material.dart';
main() {
debugPrint = (String message, {int wrapWidth}) {};
}
Я думаю, что связанный SO задает нам вопрос, как двигаться. Вы также можете создать сценарий сборки, который изменяет исходный файл перед вызовом flutter build ....
Не знаю, но спасибо. Я с нетерпением жду этого сценария нестандартной сборки. Если у вас уже есть ссылки, мы будем благодарны им;)
Вы можете использовать простой сценарий оболочки или сценарий bash. У меня есть проект, в котором я копирую другой файл Dart, содержащий некоторые значения конфигурации, которые импортируются куда-то на место перед сборкой. Таким образом, мне не нужно изменять содержимое файлов
Я проведу дополнительное исследование по этой теме. Может, я задам конкретный вопрос. А пока проголосовал за ваш ответ! ;)
Я объединил принятый ответ с идеей здесь и использовал его main.dart, чтобы везде отключить debugPrint.
const bool isProduction = bool.fromEnvironment('dart.vm.product');
void main() {
if (isProduction) {
debugPrint = (String message, {int wrapWidth}) {};
}
runApp(
MyApp()
);
}
Ссылка, которую вы дали, не работает. Ошибка получения страницы не найдена.
я исправил ссылку. не знаю, что раньше пошло не так :(
@Sebastian Я думаю, вы всегда проверяете bool kDebugMode / kReleaseMode, который является константой, предоставляемой фондом Flutter.
И как мне проверить вариант сборки, чтобы я мог делать это только при компиляции для продакшена? Мне не нравится это решение: stackoverflow.com/questions/47438564/…, и я не хочу использовать такой пакет, как simple_preprocessor.