Мне тоже стало любопытно, и я начал искать его в исходном коде Android.
Я нашел соответствующий код в репозитории platform/frameworks/base
, в файле tools/aapt/Resource.cpp
. Соответствующая функция - fullyQualifyClassName
, вызывается massageManifest
.
Правило, которое оно применяет, объясняется в блоке комментариев в функции fullyQualifyClassName
:
// asdf --> package.asdf
// .asdf .a.b --> package.asdf package.a.b
// asdf.adsf --> asdf.asdf
Объясняя это правило, мы имеем:
- Если имя начинается с точки, всегда ставьте перед ним префикс.
- Если имя имеет точку где-либо еще, не ставьте перед ней префикс.
- Если имя вообще не имеет точки, добавьте к пакету префикс.
Итак, чтобы ответить на ваш вопрос: до тех пор, пока нигде нет точки, оба способа написания названия занятия должны иметь одинаковый эффект.
В качестве дополнительной функции massageManifest
показывает, где применяется это правило:
- В элементе
application
, атрибутах name
и backupAgent
.
- В элементах
activity
, service
, receiver
, provider
и activity-alias
, в атрибуте name
.
- В элементе
activity-alias
, в атрибуте targetActivity
.