Как работает новое приложение в build.gradle?

Google выпустила версию 0.11 плагина Android Gradle.

Примечания к выпуску содержат следующее:

Одно из видимых изменений пользователя в 0.11 - это то, что мы устарели packageName и packageNameSuffix, и переименовали их в applicationId и applicationIdSuffix. Целью этого является ясно, что этот идентификатор приложения отделен от пакета объявления в вашем манифесте и, в частности, класс R и Класс BuildConfig и все классы реализации внутри вашего приложения, могут быть переименованы и реорганизованы свободно; вам просто нужно сохранить applicationId же. Если вы откроете файл build.gradle, выделение этих устаревших вызовов и предоставление быстрых исправлений для обновления их:

Что именно это означает. Как пакетное имя в сборке script отделено от той, что находится в манифесте?

Ответ 1

package, указанный в AndroidManifest.xml, идентифицирует одно приложение, установленное на устройстве. Имя самого свойства вводит в заблуждение, поскольку можно подумать, что для рефакторинга классов Java может потребоваться переименование свойства package. Свойством package может быть любая строка с соблюдением ограничений, описанных в javadoc.

Поскольку эта путаница ребята Google решили переименовать package в applicationId. Однако это изменение относится только к файлу gradle. Изменение имени свойства манифеста нарушит совместимость с предыдущими версиями, что моя догадка.

Поэтому, когда вы создаете APK, gradle заменяет значение свойства manifest package значением applicationId, указанным в gradle script.

Если вы хотите проверить его самостоятельно. Просто установите applicationId с другим значением, что ваш манифест package и постройте APK. Затем перейдите в папку /build/intermediates/manifestests/dev/debug и откройте AndroidManifest.xml. Вы найдете там applicationId значение.