2014-11-19 3 views
2

я использую Dexguard в моем андроиде приложения для защиты от обратной engineering.Now в моем приложении, которое является очень большим, я использовал несколько мест System.out.println во многих классах, в которых я являюсь печатать URL-адрес моего сервера для отладки для моей легкости. Теперь, когда я выпускаю это приложение, и этот apk, который я предоставляю другим разработчикам, они могут видеть все объекты System.out.println в своем логарифме. как следует избегать этого. Это имеет серьезную проблему.Dexguard безопасность во время отладки

ответ

2

Прежде всего, вы не должны использовать System.out.println непосредственно во всем мире. Используйте собственный класс-оболочку для ведения журнала.

В dexguard/proguard вы можете использовать assumenosideeffects для удаления кодов, которые не нужны для выпуска.

Значительная оценка: System.out.print Вы можете добавить следующие правила для вашего dexguard.

-assumenosideeffects class java.io.PrintStream { 
    public void println(%); 
    public void println(**); 
} 

Но это опасно, так как этот класс может использоваться для иных целей, кроме ведения журнала.

быстрый способ для вас будет использовать android.util.Log вместо System.out.print, а затем добавьте следующие

-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(...); 
} 

См proguard docs

+0

Я написал это так много мест в моем приложении. Есть ли способ зашифровать их или отключить, выпуская apk ?? – abh22ishek

+1

Разве это не то, что предложил @vKashyap? добавив эти фрагменты в ваш конфигурационный файл proguard/dexguard, и он удалит их из вашего скомпилированного кода выпуска. Ты это пробовал? – scottyab

+0

благодарит его работу – abh22ishek

1

хороший ответ на @vKashyap, вы также можете добавить это также. ..

-assumenosideeffects class java.lang.Exception { 
    public void printStackTrace(); 
} 
+0

Могли бы вы также сказать мне, как шифровать папки resourece в dexguard.it не работает. Я могу легко получить мои файлы макета, когда я декомпилирую свой apk? – abh22ishek

+0

Это было бы более целесообразно поднять другой вопрос и/или связаться с поддержкой dexguard. Однако, я думаю, вы действительно заботитесь о файлах макетов? – scottyab

+0

Да, это своего рода необходимый. – abh22ishek