Android: Welcher für den Paketnamen? Paketname des Manifests oder Gradle applicationId?

8

Ich verwende Android Studio Version 2.1.2 und versuche, Google Cloud Messaging für meine App zu implementieren.

Dazu muss ich eine JSON-Datei (Konfigurationsdatei) von Google Services anfordern, die ich meinem Projekt hinzufügen kann.

Um diese Datei aus dem Google Api-Konsolenfeld zu erhalten, muss ich meinen App-Namen und den Paketnamen meiner App angeben. Und hier beginnt mein Problem.

In meiner App unterscheidet sich der Paketname in der Manifest-Datei von der applicationId in der build.gradle-Datei auf Anwendungsebene . Und im Google Play Store wird die ApplicationId verwendet.

Um zu veranschaulichen, was ich meine, in meiner Manifest-Datei;

%Vor%

und in meiner Gradle-Datei;

%Vor%

Nun, welche von denen zu googlen als Paketname, um Konfigurationsdatei zu bekommen?

Zweitens, welches für die Anforderung von C2D_MESSAGE in meiner Manifestdatei verwendet werden soll, wo das Format ist;

%Vor%

Danke für jede Hilfe.

    
Orcun 13.07.2016, 09:08
quelle

6 Antworten

16

Die in der Datei build.gradle angegebene Anwendungs-ID wird verwendet.

Der Eintrag in AndroidManifest.xml wird überschrieben

Ihr AndroidManifest.xml wird so aussehen

%Vor%     
Alim Parkar 13.07.2016, 09:13
quelle
7

Es gibt einen großartigen Artikel über dieses hier von Android Studio .

Warum gibt es zwei?

  • Das endgültige Paket, das in Ihrem erstellten Manifest von .apk verwendet wird und das Paket ist, auf dem Ihre App auf Ihrem Gerät und im Google Play Store bekannt ist, ist die "Anwendungs-ID" wie in der GRADLE-Datei angegeben.
  • Das Paket, das in Ihrem Quellcode verwendet wird, um auf Ihre R-Klasse zu verweisen und alle relativen Aktivitäts- / Serviceregistrierungen aufzulösen, wird weiterhin als "Paket" bezeichnet, wie in Ihrem Manifest definiert.

Welchen sollte ich bearbeiten, um meinen endgültigen Paketnamen zu ändern?
Der Paketname in Gradle überschreibt den Paketnamen im Manifest. Also sollten Sie es in Gradle ändern.

Wenn Sie die Struktur Ihres Projekts tatsächlich ändern möchten, müssen Sie Ihren Paketnamen in Manifest.xml

ändern

Für Berechtigungen
In Ihrem speziellen Fall, den Berechtigungen, fragen Sie, welchen Paketnamen Sie für Google Messaging angeben sollten. Da Google Messaging Ihren endgültigen Paketnamen benötigt, sollten Sie Ihren Gruppennamen eingeben. Wenn Sie Flavors verwenden, sollten Sie dies dynamisch tun, wie von @ alims Antwort vorgeschlagen.

    
Mdlc 13.07.2016 09:14
quelle
1

Gradle ersetzt Manifest. Verwende grddle

    
Prashant 13.07.2016 09:10
quelle
0

Soweit ich weiß, brauchen Sie beide. Das Manifest benötigt es, um die Klassen zu finden, die das activity -Element verwendet. Wenn Sie es nicht brauchen, würde die IDE eine Notiz anzeigen, die besagt: "Sie brauchen das nicht, es wird überschrieben ...."

  

Gradel ersetzt Manifest. Verwende grddle

Das stimmt bis zu einem gewissen Grad, aber Sie brauchen immer noch den Paketnamen im Manifest. Ich bin mir nicht sicher, warum es in Großbuchstaben ist, aber Gradle überschreibt nicht das Paket im Manifest!

    
Zoe 13.07.2016 09:11
quelle
0

Google verwendet Ihren Paketnamen als eindeutigen Namen, um Ihre App zu identifizieren. Da Sie erwähnt haben, dass es sich um Google Play handelt, sollten Sie das in Gradle-Datei verwenden, um dies zu ermöglichen.

Und um den zweiten Teil Ihrer Frage zu beantworten, ist es nur eine Konvention, die App <application-package-name> + ".permission.C2D_MESSAGE als Ihren Berechtigungsnamen zu definieren, damit Sie die in Gradle-Datei erwähnte verwenden können.

Hoffe das hilft:)

    
Omar Al Halabi 13.07.2016 09:15
quelle
0

Mit Einführung in Android Studio gesehen wurde geändert. Früher in Eclipse Manifest.xml Paketname als Ganzes und allein betrachtet wie Sie Ihre App im Google Play Store hochladen wird es den Paketnamen aus Manifest.xml auswählen, aber es ist nicht der Fall mit Android Studio.

In Android Studio gibt es zwei Orte, an denen der Name des Anwendungspakets angegeben wird.

  1. Manifest.xml
  2. build.gradle

build.gradle Beispiel

%Vor%

Beachten Sie, dass die Anwendungs-ID über dem anderen Speicherort des Paketnamens steht.

@Mdlc hat absolut Recht.

Welchen sollte ich bearbeiten, um meinen endgültigen Paketnamen zu ändern? Der Paketname in Gradle überschreibt den Paketnamen im Manifest. Also sollten Sie es in Gradle ändern.

Wenn Sie die Struktur Ihres Projekts tatsächlich ändern möchten, müssen Sie Ihren Paketnamen in Manifest.xml

ändern

Wenn wir den Namen des Anwendungspakets in Android Studio umbenennen, ändert sich die Anwendungs-ID nicht. Wir müssen es manuell machen. Bitte beachten Sie dies, weil es sehr wichtig ist. Wenn wir unsere Anwendung im Google Play Store hochladen, wählen Sie den Paketnamen google mit applicationId aus, wie im obigen Beispiel com.company.testapp.

    
Geek 31.08.2016 08:49
quelle