#android #logcat #android-logcat
#Android #logcat #android-logcat
Вопрос:
Я знаю, что для ускорения работы и устранения потерь процессора при выпуске приложения я могу просто экспортировать его с proguard.cfg
, содержащим:
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** i(...);
public static *** d(...);
public static *** w(...);
public static *** e(...);
}
Но … если с целью удобной минимизации переключения между версией отладки и выпуска (которая всегда требует полной деинсталляции одной перед установкой другой), я хочу всегда запускать версию отладки, без подключения через USB и с Settings => Applications => Development => USB debugging
непроверенной, выполняются ли какие-либо из Log.v(), Log.i () и т.д. Вообще?
Я не могу подключить DDMS через USB, чтобы проверить это самостоятельно … итак, спасибо за любой совет.
Ответ №1:
Он все равно запишет ваше сообщение журнала во внутренний буфер журнала.
И на рынке есть несколько приложений, которые могут отображать этот буфер, одно из них называется Android System Info или что-то в этом роде, AFAIR.
Комментарии:
1. Спасибо! Это приложение Android System Info открывает глаза. Я обнаружил в своих журналах телефона 2 года назад… Это, должно быть, занимает много места. Есть ли способ очистить этот файл журнала?
Ответ №2:
Согласно руководству ProGuard ( http://proguard.sourceforge.net/index.html#/manual/usage.html ):
-предположим, что это влияет на class_specification
Определяет методы, которые не имеют никаких побочных эффектов (кроме, возможно, возврата значения). Затем на этапе оптимизации ProGuard удалит вызовы таких методов, если сможет определить, что возвращаемые значения не используются. Обратите внимание, что ProGuard проанализирует ваш программный код, чтобы автоматически найти такие методы. Он не будет анализировать библиотечный код, для которого эта опция может быть полезна. Например, вы могли бы указать метод System.currentTimeMillis(), чтобы любые вызовы idle к нему были удалены. Обратите внимание, что ProGuard применяет этот параметр ко всей иерархии указанных методов. Применимо только при оптимизации. В общем, делать предположения может быть опасно; вы можете легко сломать обработанный код. Используйте эту опцию, только если вы знаете, что делаете!
Таким образом, вызовы Log.v(), Log.i () и т.д. Даже не существуют в APK.
Комментарии:
1.Спасибо, но мой вопрос был не в отношении Proguard. Мой вопрос был с точностью до наоборот: защита не применена, но
USB debugging
не отмечена, а USB-кабель отсоединен. Что происходит тогда с Log.v(), Log.i() и т.д.?2. Журнал записывается. Он всегда записывается независимо от состояния отладки по USB. Вы можете установить приложение logview на устройстве (например, так: market.android.com/details?id=ukzzang.android.app.logviewer ) и убедитесь, что регистрация все еще происходит. Я полагаю, что под капотом работает демон системного журнала.
3. Спасибо плюс два. Есть ли способ очистить этот файл журнала? (это только один файл журнала?)