2015-01-28 2 views
1

Я используюProguard не удаляет Log.d во внутренних классах?

-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(...); 
    public static java.lang.String getStackTraceString(java.lang.Throwable); 
} 

Однако, когда я декомпилировать, я вижу один и только собственную строку, я использовал в Log.d линии в декомпилированном файле банка. Как это возможно? Не Proguard полностью удаляет строки Log.d?

ответ

0

Это актуально, если оптимизация ProGuard включена, т.е. ваш proguard.config этот

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

моя строка proguard.config точно такая же. В чем причина этого? Как я могу использовать оптимизацию, но также удалить строки в линиях Log.d? – frankish

0

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

Вы можете попробовать использовать класс обертки журнала (like this one) для обертывания android.util.Log. Я использовал этот подход в связи с запиской от Эрика (a.k.a Mr Proguard) в этом answer о том, как Proguard проверяет код. Таким образом, это заканчивается простым звонком на Log.d(tag, string), а не Log.d(tag, string + value+ String)

Или использовать DexGuard IIRC имеет явную функцию для удаления журнала. - [обновление: Извините, мой плохой это не Явная функция DexGuard использует тот же конфигуратор, что и вы отметили. Думаю, я думал о том, что декомпилированный код более искажен с помощью DexGuard.]

+0

Итак, в соответствии с классом-оболочкой, которым вы поделились, когда я использую 'QLog.d ('myclass', 'my string ->' + myvalue);' и настраивать Proguard для удаления этих строк, не будет 'моя строка -> 'быть видимым? Разве это не то же самое? В чем логика? (У меня есть DexGuard, но я не знаю об этой специальной функции: |) – frankish

+0

Хм, мне нужно будет дважды проверить, изменив одно из моих приложений, если «моя строка ->» все еще видна. Я неправильно понял, что вы главная цель, я думал, что вы пытаетесь остановить приложение ProGuarded от регистрации. – scottyab

+0

Я проверяю LogCat, пока мое приложение работает, и ничего не выводится (правильно). Но ProGuard (DexGuard) не затрагивает эту строку каким-то образом .. (я вижу это, когда декомпилирую файл dex) – frankish

Смежные вопросы