Android Studio version 2.1.2を使用していますが、アプリにGoogle Cloud Messagingを実装しようとしています。
それを行うには、Googleサービスのjsonファイル(構成ファイル)を取得してプロジェクトに追加する必要があります。
Google Apiコンソールパネルからこのファイルを取得するには、my app nameおよびmy app's package nameを指定する必要があります。そして、ここが私の問題の始まりです。
私のアプリではマニフェストファイルのパッケージ名がアプリケーションレベルのbuild.gradleファイルのapplicationIdと異なります。また、Google Playストアでは、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に提供するものはどれですか?
2番目に、フォーマットがここにある私のマニフェストファイルでC2D_MESSAGEの許可を要求するために使用する必要があります;
<application-package-name> + ".permission.C2D_MESSAGE
助けてくれてありがとう。
Build.gradleで指定されたアプリケーションIDが使用されます。
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によるこの こちら についての素晴らしいサポート記事があります。
なぜ2つあるのですか?
最終的なパッケージ名を変更するために編集する必要があるのはどれですか
Gradleのパッケージ名は、マニフェストのパッケージ名を上書きします。したがって、Gradleで変更する必要があります。
プロジェクトの構造を実際に変更したい場合は、Manifest.xmlのパッケージ名を変更する必要があります
権限の場合
特定の場合、権限では、Googleメッセージングに提供する必要があるパッケージ名を尋ねます。 Googleメッセージングでは最終的なパッケージ名が必要なので、gradleパッケージ名を入力する必要があります。フレーバーを使用している場合は、 @ alimの回答で示唆されているように動的に行う必要があります。
gradleはマニフェストを置き換えます。グラドルを使う
Android Studioでの導入により、変更されたStudioが変更されました。GooglePlayストアにアプリをアップロードすると、Eclipse Manifest.xmlの以前のパッケージ名は完全かつ唯一と見なされ、Manifest.xmlからパッケージ名が選択されますAndroid Studioの場合はそうではありません。
Android Studioには、アプリケーションパッケージ名が入る場所が2つあります。
build.gradleの例
defaultConfig {
applicationId "com.company.testapp"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
上記のapplicationIdに注目してください。これは、パッケージ名が置かれる別の場所です。
@Mdlcは完全に正しいです。
最終的なパッケージ名を変更するには、どちらを編集する必要がありますか? Gradleのパッケージ名は、マニフェストのパッケージ名を上書きします。したがって、Gradleで変更する必要があります。
プロジェクトの構造を実際に変更したい場合は、Manifest.xmlのパッケージ名を変更する必要があります
Android Studioでアプリケーションパッケージ名の名前変更をリファクタリングしても、アプリケーションIDは変更されません。手動で変更する必要があります。非常に重要なので、これに注意してください。アプリケーションを上記の例com.company.testappの場合のように、Google Playストアのgoogle pickパッケージ名はapplicationIdと一致します。
Googleはパッケージ名をアプリを識別する一意の名前として使用します。 Google Playにあるとのことですので、それを可能にするにはGradleファイルにあるものを使用する必要があります。
そして、質問の2番目の部分に答えるために、アプリを定義するのは慣例にすぎません<application-package-name> + ".permission.C2D_MESSAGE
を権限名として使用するため、Gradleファイルで言及されているものを使用できます。
お役に立てれば :)
Gradle applicationIdは、playstoreの最後のPackageNameです。