Context.getPackageName () vs BuildConfig.APPLICATION_ID

Я могу получить имя пакета, используя:

Context.getPackageName() 

или

 BuildConfig.APPLICATION_ID 

Есть ли разница между этими двумя способами? Является предпочтительным для других в конкретных ситуациях? Можно ли предположить, что они всегда дают тот же результат?

В принципе, какой из них лучше ?

BuildConfig предоставляется Gradle . Если вы не используете Gradle вы не можете получить доступ к имени пакета с помощью BuildConfig .

Использование Context для получения имени пакета иногда может быть неприменимо, если контекст или контекст не имеют значения null, поэтому вы можете использовать BuildConfig.APPLICATION_ID .

Я бы использовал Context.getPackageName() потому что результат предоставляется из операционной системы, а не константа в параметрах построения.

Раньше я использовал getPackageName (), но только использовал BuildConfig.APPLICATION_ID, так как он стал доступен. Быть быстрее, поскольку это только переменная и не звонит – но это не имеет большого значения. Также в библиотеках, использующих getPackageName (), может быть по-прежнему необходимо.

Возможно использовать оба элемента в качестве основной меры против фальсификации пакетов. В вашем приложении вы можете вставить код:

 if (!BuildConfig.APPLICATION_ID.equals(getPackageName())) { insert code to report information about tampering to remote server } 

Когда-то я получаю странные отчеты, исходящие из некоторого варианта моего приложения, которое было подделано добавлением префикса или суффикса в исходное имя пакета

Intereting Posts
Блок прогресса в ProgressDialog Кордова не устанавливает приложение на Android-устройстве Ограничить размер текстового поля горизонтально Ошибка Android InfInputField Inflator Правильное уведомление AsyncTaskLoader об изменениях данных из фонового потока Представление интерфейса пользовательского интерфейса для Ember.js HTM5 => Приложение «Телефонный зазор» (или альтернативный стек) Какой размер скриншота я должен использовать в Android Market? Покрытие Jacoco для оператора switch Android BroadcastReceiver, автоматический запуск службы после перезагрузки устройства Загрузка html-файла с веб-сервера с использованием телефонного разрыва Список пользовательских объектов и Parcelable дает NullPointerException Сохранение состояния вкладки во время изменения ориентации Почему layout_marginBottom игнорируется при использовании wrap_content? Что делает параметр filter для createScaledBitmap? Идентификационный эквивалент в WP7