Android - Видны ли звонки LogCat конечным пользователям, если телефон находится в режиме отладки? - PullRequest
8 голосов
/ 05 октября 2011

Я использовал вызовы Log.whwhat (), чтобы регистрировать различную информацию, когда я разрабатывал свое приложение для Android.Готовясь опубликовать свое приложение на Android Marketplace, я пытаюсь выяснить, что мне нужно удалить.

В соответствии с Руководством разработчика по Android , перед публикацией они предлагают:

Deactivate any calls to Log methods in the source code.

Как один деактивирует методы журнала?Очевидно, что я мог бы пройтись и стереть их все (что немного болезненно), но есть ли какой-то другой способ деактивировать вызовы журнала, о которых я не знаю?

Кроме того, какова опасность наличия журналазвонки в опубликованном приложении?Может ли кто-нибудь установить Eclipse, подключить его к своему телефону и включить режим отладки, чтобы увидеть все те же LogCat данные, которые я вижу при разработке?

Также в руководстве разработчика предлагается:

Remove the android:debuggable="true" attribute from the <application> element of the manifest.

До сих пор я не знал об этом флаге.Что именно это делает?До этого момента я занимался разработкой и отладкой своего приложения, и в моем манифесте для этого флага не установлено значение true или false.

Ответы [ 6 ]

9 голосов
/ 05 октября 2011

Да, любой может установить Android SDK (с Eclipse или без него) для просмотра всех сообщений журнала на вашем устройстве.

Я не рекомендую полностью удалять код регистрации, а вместо этого переносить его, например: if (DEBUG) Log.d(...) где DEBUG - статический логический тип, который вы определяете в удобном месте.Я предпочитаю создавать служебный класс, чтобы можно было включать / отключать все вызовы журнала для различных классов одновременно.

5 голосов
/ 05 октября 2011

Для этого проще всего было бы определить один пользовательский класс, скажем, MyLog, теперь замените все вызовы Log.d () на MyLog.d (). Теперь внутри вашего класса вы можете иметь один флаг, который может включать или отключать журналы. надеюсь, это поможет.

1 голос
/ 05 октября 2011

Да, логи могут видеть все. Кроме того, приложения могут собирать логи программно: http://www.cuteandroid.com/five-android-logcat-related-open-source-apps-for-developers

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

1 голос
/ 05 октября 2011

Хорошая практика - использовать что-то вроде if (DEBUG) Log.whatever, а затем просто сделать DEBUG false.

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

Что касается android:debuggable="true", найдите его в здесь

Наконец, да, журналы Logcat являются глобальными и могут быть просмотрены любым пользователем, использующим Android SDK.

0 голосов
/ 31 июля 2015

Я бы порекомендовал не переносить ваши записи в журнале; в зависимости от размера вашего приложения, которое может занять некоторое время, вероятно, приведет к большому количеству дополнительного кода и будет просто хлопотным ИМХО.

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

Если вы решили пойти с Proguard, вы можете поместить что-то вроде следующего в ваш файл proguard-project.txt, чтобы вычеркнуть операторы журнала.

-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(...);
}
0 голосов
/ 05 октября 2011

Да, конечно. Каждый может их видеть.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...