web-dev-qa-db-ja.com

Android:パッケージ名に使用するのはどれですか?マニフェストのパッケージ名またはGradle applicationId?

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

助けてくれてありがとう。

13
Orcun

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>
17
Alim Parkar

Android Studioによるこの こちら についての素晴らしいサポート記事があります。

なぜ2つあるのですか?

  • ビルドされた.apkのマニフェストで使用される最後のパッケージは、デバイスおよびGoogle Playストアでアプリが知られているパッケージであり、gradleファイルで指定されている「アプリケーションID」です。
  • Rクラスを参照し、関連するアクティビティ/サービス登録を解決するためにソースコードで使用されるパッケージは、マニフェストで定義されている「パッケージ」と呼ばれ続けます。

最終的なパッケージ名を変更するために編集する必要があるのはどれですか
Gradleのパッケージ名は、マニフェストのパッケージ名を上書きします。したがって、Gradleで変更する必要があります。

プロジェクトの構造を実際に変更したい場合は、Manifest.xmlのパッケージ名を変更する必要があります

権限の場合
特定の場合、権限では、Googleメッセージングに提供する必要があるパッケージ名を尋ねます。 Googleメッセージングでは最終的なパッケージ名が必要なので、gradleパッケージ名を入力する必要があります。フレーバーを使用している場合は、 @ alimの回答で示唆されているように動的に行う必要があります。

9
Mdlc

gradleはマニフェストを置き換えます。グラドルを使う

1
Prashant

Android Studioでの導入により、変更されたStudioが変更されました。GooglePlayストアにアプリをアップロードすると、Eclipse Manifest.xmlの以前のパッケージ名は完全かつ唯一と見なされ、Manifest.xmlからパッケージ名が選択されますAndroid Studioの場合はそうではありません。

Android Studioには、アプリケーションパッケージ名が入る場所が2つあります。

  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でアプリケーションパッケージ名の名前変更をリファクタリングしても、アプリケーションIDは変更されません。手動で変更する必要があります。非常に重要なので、これに注意してください。アプリケーションを上記の例com.company.testappの場合のように、Google Playストアのgoogle pickパッケージ名はapplicationIdと一致します。

1
Geek

Googleはパッケージ名をアプリを識別する一意の名前として使用します。 Google Playにあるとのことですので、それを可能にするにはGradleファイルにあるものを使用する必要があります。

そして、質問の2番目の部分に答えるために、アプリを定義するのは慣例にすぎません<application-package-name> + ".permission.C2D_MESSAGEを権限名として使用するため、Gradleファイルで言及されているものを使用できます。

お役に立てれば :)

0
Omar El Halabi

Gradle applicationIdは、playstoreの最後のPackageNameです。

0