Есть ли способ удалить протоколирование вызовов без использования оптимизации ProGuard?

У меня есть класс-оболочка для вызовов журнала во время разработки. Это позволяет легко включать и выключать все журналы в любой момент времени (плюс некоторые другие полезные функции). Ранее я использовал специальную оптимизацию ProGuard для удаления этого класса во время выпуска, которая также удаляла вызовы статических методов класса (поэтому строки журнала не оставались позади).

К сожалению, из-за это, мне нужно отключить функцию оптимизации ProGuard. Хотя я могу легко отключить ведение журнала, все мои строки журнала по-прежнему видны в результирующем apk, и, если я что-то не упустил, в ProGuard нет другого способа удалить их.

Есть ли другой способ удалить эти строки при создании пакета выпуска в графическом интерфейсе Eclipse? (не муравей)


person wirbly    schedule 20.07.2011    source источник


Ответы (1)


Я не знаю, где находятся ваши строковые литералы и т. д., но для имитации оператора отладки ifdef вы должны сделать что-то подобно этому, что может быть тривиально, если вы можете просто обернуть все затронутые внутренние классы/методы/переменные вашего класса отладки в такой оператор.

По-видимому, компилятор удаляет все, что он находит в этом блоке, как более или менее мертвый код, по крайней мере, я читал, но никогда не проверял это.

person Idistic    schedule 21.07.2011
comment
Строки на самом деле находятся в вызове метода ведения журнала: Logger.print("doing something here");, поэтому, к сожалению, отключение ведения журнала внутри класса Logger по-прежнему оставит строки разбросанными по всему проекту. (Это была замечательная вещь в методе ProGuard — он также удалял все вызовы) - person wirbly; 21.07.2011
comment
@wirbly, так что в основном много if { добавляет, ну, может быть, кто-то подойдет без чего-то еще, это все, что я могу придумать без ProGuard - person Idistic; 21.07.2011