Intereting Posts
Запланировать повторную работу с помощью диспетчера работ Последняя проблема удаления утилиты Android RecyclerView (runtime) Почему у меня есть «Настройка airplane_mode_on переместилась с android.provider.Settings.System » в logcat, когда мое приложение не имеет к этому никакого отношения? Как отключить устройство Bluetooth с помощью Android 2.1 sdk Идентификатор регистрации дубликатов Android для разных устройств Миграция с eclipse + SVN на Android Studio «Не найдено никаких тестов» для контрольных испытаний для Lollipop и выше Android – запрос SMS ContentProvider? Как обрабатывать файлы cookie в httpUrlConnection с помощью cookieManager Проблема с типом контента Retrofit-2 Сменить вкладку программно с помощью SlidingTabLayout Скрыть строку из ListView, не занимая места ScaleGestureDetector.onTouchEvent всегда возвращает 'true' В Android 7 (уровень API 24) моему приложению не разрешено отключать звук телефона (установить режим звонка на тихий) Камера на Android-примере

Android: какой из них использовать для имени пакета? Пакетное имя манифеста или приложение GradleId?

Я использую Android Studio версии 2.1.2 , и я пытаюсь внедрить Google Cloud Messaging в свое приложение.

Чтобы это сделать, мне нужно получить json-файл (файл конфигурации) Google Apps, чтобы добавить его в мой проект.

Чтобы получить этот файл с панели консоли Google Api, мне необходимо указать имя моего приложения и имя моего приложения . И вот здесь начинается моя проблема.

В моем приложении имя пакета в файле манифеста отличается от applicationId в файле build.gradle на уровне приложения . И В Google Play Store используется applicationId.

Чтобы проиллюстрировать, что я имею в виду, в моем файле манифеста;

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> 

И в моем файле gradle;

 android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId 'com.menu.jkrk' minSdkVersion 16 targetSdkVersion 23 versionCode 3 versionName "1.0" } 

Теперь, какой из них предоставить google как имя пакета для получения файла конфигурации?

Во-вторых, который следует использовать для запроса разрешения C2D_MESSAGE в моем файле манифеста, где находится формат;

 <application-package-name> + ".permission.C2D_MESSAGE 

Спасибо за любую помощь.

Solutions Collecting From Web of "Android: какой из них использовать для имени пакета? Пакетное имя манифеста или приложение GradleId?"

Идентификатор приложения, указанный в файле build.gradle, будет использоваться.

Запись в AndroidManifest.xml переопределена

Ваш AndroidManifest.xml будет выглядеть следующим образом:

 <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <receiver ...> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="${applicationId}" /> </intent-filter> </receiver> 

Об этом здесь есть замечательная статья поддержки Android Studio.

Почему есть два?

  • Последний пакет, который используется в вашем встроенном манифесте .apk, является пакетом, которое ваше приложение известно как на вашем устройстве, так и в магазине Google Play, это «идентификатор приложения», как указано в файле gradle.
  • Пакет, который используется в исходном коде для обращения к вашему классу R и для разрешения любых относительных регистраций активности / сервисов, по-прежнему называется «пакетом», как определено в вашем манифесте.

Какой я должен изменить для изменения имени моего последнего пакета
Имя пакета в Gradle перепишет имя пакета в манифесте. Поэтому вы должны изменить его в Gradle.

Если вы хотите на самом деле изменить структуру своего проекта, вам нужно будет изменить ваше имя пакета в Manifest.xml

Для разрешений
В вашем конкретном случае, разрешениях, вы спрашиваете, какое имя пакета вы должны предоставить для Google Messaging. Поскольку для Google Messaging требуется ваше окончательное имя пакета, вы должны ввести свой заголовок gradle packagename. Если вы используете ароматы, вы должны сделать это динамически, как это было предложено ответом @ alim.

Gradle заменяет манифест. Использовать град

Насколько я знаю, они нужны им обоим. Этот манифест нуждается в нем, чтобы найти классы, которые использует элемент activity . Если вам это не понадобилось, в среде IDE появится примечание с указанием «вам это не нужно, оно переопределено …»

Gradle заменяет манифест. Использовать град

Это верно в определенной степени, но вам все равно нужно имя пакета в манифесте. Я не уверен, почему это происходит в градиенте, но град не переопределяет пакет в манифесте!

Google использует ваше имя пакета как уникальное имя для идентификации вашего приложения. Поскольку вы упомянули, что он находится в Google Play, вы должны использовать его в файле Gradle, чтобы сделать это возможным.

И чтобы ответить на вторую часть вашего вопроса, это просто соглашение о назначении приложения <application-package-name> + ".permission.C2D_MESSAGE качестве вашего имени разрешения, поэтому вы можете использовать тот, который указан в файле Gradle.

Надеюсь это поможет 🙂

С введением с Android Studio замечено было изменено. Раньше в имени пакета eclipse Manifest.xml считалось полным и единственным, когда вы загружаете свое приложение в магазин Google Play, он будет выбирать имя пакета из Manifest.xml, но это не относится к Android Studio.

В Android Studio есть два места, куда входит имя пакета приложений.

  1. manifest.xml
  2. build.gradle

Пример build.gradle

 defaultConfig { applicationId "com.company.testapp" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } 

Обратите внимание на applicationId, выше которого находится другое место, куда отправляется имя пакета.

@Mdlc абсолютно прав.

Какой я должен изменить, чтобы изменить свое окончательное имя пакета? Имя пакета в Gradle перепишет имя пакета в манифесте. Поэтому вы должны изменить его в Gradle.

Если вы хотите на самом деле изменить структуру своего проекта, вам нужно будет изменить ваше имя пакета в Manifest.xml

Когда мы реорганизуем переименование имени пакета приложения в Android Studio, он не меняет идентификатор приложения. Мы должны сделать это вручную. Пожалуйста, обратите внимание на это, потому что это очень важно. Как только мы загрузим наше приложение в Google Play store, выберем имя пакета, соответствующее имени приложения, как в случае вышеприведенного примера com.company.testapp.