Мои сообщения журнала не удаляются с помощью конфигурации proguard

Я разрабатываю приложение для Android.

Затем я включаю и настраиваю proguard:

Шаг 1. Включите proguard:

В project.properties у меня есть:

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt 

Я также пробовал следующее:

 # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): proguard.config=proguard.cfg 

Шаг 2. Настройте proguard:

В proguard.cfg у меня есть:

 -assumenosideeffects class android.util.Log { *; } 

Я думаю, что приведенная выше конфигурация должна удалить все журналы.

Но когда я устанавливаю APK в папку target/ folder и запускаю свое приложение, я все еще вижу все сообщения журнала в консоли logcat. Зачем?

Вы должны использовать первую строку в своем проекте. Свойства :

 proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt 

Затем вы должны добавить эти строки в свой proguard-project.txt ( не устаревший proguard.cfg):

 -assumenosideeffects class android.util.Log { public static boolean isLoggable(java.lang.String, int); public static int v(...); public static int i(...); public static int w(...); public static int d(...); public static int e(...); } 

Эти параметры имеют какой-либо эффект, если файл не содержит -dontoptimize.

Ant и Eclipse выбирают настройки из project.properties. Gradle и Maven требуют эквивалентных настроек, которые определяют файлы конфигурации, в build.gradle и в pom.xml соответственно.

Похожие вопросы и ответы:

  • Как настроить файл proguard-project.txt для удаления только журналов
  • Удаление вызова журнала с помощью proguard

Я не могу вспомнить, где я нашел ссылку на этот метод, но я всегда использовал это:

 -assumenosideeffects class android.util.Log { public static *** d(...); public static *** v(...); } 

В моей конфигурации. Он удаляет отладочные и подробные записи, которые я написал

Вы можете создать свой собственный класс утилиты журнала и использовать его,

Что я делаю, когда выпускаю свои приложения: я создаю свой собственный класс журнала с методами i, d, e, w и т. Д. И использую этот класс журнала вместо Android, потому что тогда я могу использовать простой переключатель, например boolean debug = true В соответствии с которым я пишу в LogCat или нет. Таким образом, я могу оставить все свои операторы журнала в приложении. Когда вы написали свой собственный класс журнала, чтобы использовать его во всем своем приложении, вы можете просто заменить все,

Удалить:

 import android.util.Log; 

Добавить

 import your.package.Log; 

Как это:

  public class Log { public static void i(String logTag, String logString) { if (isLogsEnabled) { Log.i(logTag, logString); } } public static void v(String logTag, String logString) { if (isLogsEnabled) { Log.v(logTag, logString); } } // you can add method for w,d,wtf also... } 

Ведение журнала – очень удобный метод отладки и диагностики, используемый разработчиками. Используйте класс ведения журнала, предоставляемый как часть Android SDK, чтобы записывать важную информацию о вашем приложении в LogCat, но перед публикацией обязательно просмотрите свою реализацию регистрации приложения, так как в журнале есть недостатки производительности.

Перед выпуском приложения внимательно изучите журнал, чтобы он не использовал никакие конфиденциальные данные,

Журнал очень важен, когда ваше приложение в режиме тестирования, журналы будут предоставлять текущее состояние и сценарий вашего приложения на текущем устройстве. Поэтому он очень полезен, когда вы будете обновлять свое приложение.

Когда-то Google игра отвергала ваше приложение, если они были найдены, что ваш механизм регистрации нарушает правила.

Intereting Posts
Как работать с Tensorflow на платформе Android? Расшифровка AES на Android слишком медленная, чтобы ее можно было использовать. Будет ли NDK быстрее? Другие идеи? Как показать изображение в теле письма? Возможно ли запустить службу на платформе Android непрерывно даже после блокировки устройства? Список слоев Android XML: как разместить верхний слой Статус HTTP 403 – Недействительный токен CSRF «null» был найден в параметре запроса Как выпустить ресурс микрофона, когда ему требуется другое приложение для Android? Текст подсказки, который не отображается в версии 2.3 Android, но работает на 4.1 Как загрузить файл с сервисом в фоновом режиме? Как исправить проблемы notifyDataSetChanged / ListView в динамической оболочке адаптера Android Лидерская панель отображается только для тестировщиков Сохранить растровое изображение в местоположении Android Convert String для JSONObject Как отфильтровать намерение в соответствии с его дополнительными данными? Как создать TextAppearance использует меньший размер шрифта, чем @android: attr / textAppearanceSmall