Android-パッケージ名の規則


205

android.comの「Hello World」の例の場合、パッケージ名は
"package com.example.helloandroid;"

このパッケージに名前を付けるためのガイドライン/標準はありますか?(参照がいいでしょう)

回答:


230

Androidは通常のJavaパッケージ規則に準拠しており、ここに重要なテキストスニペットがあります(これは、Androidでの開発中のxmlファイルの幅広い使用に関して重要です)。

逆の順序にする理由は、ストレージメディアのレイアウトに関係するためです。アプリケーション名の各ピリオド( '。')をパス区切り文字と見なすと、パブリッシャーのすべてのアプリケーションがパス階層にまとめられます。したがって、たとえば、アドビのパッケージは次の形式になります。

com.adobe.reader(Adobe Reader)

com.adobe.photoshop(Adobe Photoshop)

com.adobe.ideas(Adobe Ideas)

[これは単なる例示であり、これらは正確なパッケージ名ではない場合があることに注意してください。]

これらは内部的に(それぞれ)以下にマッピングできます。

com / adobe / reader

com / adobe / photoshop

com / adobe / ideas

この概念は、Javaのパッケージ命名規則に由来しています。詳細については、以下を参照してください。*

http://en.wikipedia.org/wiki/Java_package#Package_naming_conventions

出典:http : //www.quora.com/Why-do-a-majority-of-Android-package-names-begin-with-com


2
ここでAndroidのサイトから(簡単に)参照だ-一見「パッケージ名」で、段落持っdeveloper.android.com/resources/tutorials/hello-world.html
ボヤンKomazec

4
あなたはあなたの答えを誤解して、人々を誤解させるかもしれません。これはcom.adobe.ideas(大文字のI)ではなく、com.adobe.ideasです。パッケージ名に大文字を使用することはお勧めできません(一部のGoogleサービスは機能しません)
Amir Uval

4
ごめんね。あなたの答えを見た後、私はさらに詳しく調べました、そして私のブラウザーはiをドットに接続し、それを大文字のIのように見せました。どのように恥ずかしいですか:S
Amir Uval

7
@androiddeveloper-すべての英数字、「。」および '_'が許可されます。ただし、パッケージ名(または、com.adobe.readerの「reader」のような「サブパッケージ」の名前)を数字で始めることはできません。また、Javaの予約キーワード(「for」や「while ")。これらの制限に対処するには、パッケージ名の先頭に「_」を付けることで、3.cookies.for.you.comがcom.you._for.cookies._3に変換されるようにします。詳細については、関連するOracleのドキュメントを参照してください。
Jimmy Huch、2015

1
「com.appname」はAndroidで有効なパッケージ名ですか?
マークブイケマ2016年

65

パッケージ名は、アプリケーションを一意に識別するために使用されます。
Androidは、パッケージ名を使用して、アプリケーションがインストールされているかどうかを判断します。
一般的な命名は次のとおりです。

com.companyname.applicationname

例えば:

com.android.Camera


2
会社/組織のドメイン名が異なる場合、comは異なる場合があります。すなわち。org.wikipedia.wikipediaapp
Niels Abildgaard

6
誰かが自分のAndroidアプリのパッケージ名として私のウェブサイト名を受け取った場合はどうなりますか?このアプリをストアから削除できますか?
Mohammad AlBanna 2016

38

http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html

企業は、逆のインターネットドメイン名を使用してパッケージ名を開始します。たとえば、example.comのプログラマーが作成したmypackageというパッケージの場合、com.example.mypackageです。

1つの会社内で発生する名前の衝突は、その会社内の規則によって処理する必要があります。おそらく、会社名の後に地域またはプロジェクト名を含めます(たとえば、com.example.region.mypackage)。

会社のドメインwww.example.comがある場合

それからあなたは使うべきです:

com.example.region.projectname

example.co.ukのようなドメイン名を所有している場合は、次のようにする必要があります。

uk.co.example.region.projectname

ドメインを所有していない場合は、メールアドレスを使用する必要があります。

name@example.comの場合:

com.example.name.region.projectname


なぜそれを使うべきなのか説明してもらえますか?会社のドメイン名をパッケージ名として使用するとどのようなメリットがありますか?
batmaci 2017年

:例として、このStackOverflowの質問を参照してくださいstackoverflow.com/questions/8381324/...
JCasso

わかりました、パッケージ名を一意にするためにこれを理解していますが、私の質問は、Google Playにアップロードするときです。グーグルプレイは、パッケージ名がオンラインになる前にストア内で一意であることを確認しませんか?したがって、Google Playからのみインストールする場合、この競合は発生し
ません

Google Playは、アプリケーションIDが一意であることを保証します。パッケージの競合をスキャンしません。したがって、開発者がこの命名規則に従わない場合、2つのインテント/サービスが同じ正規名を持つ可能性があります。ご覧ください:developer.android.com/studio/build/application-id.html
JCasso

ドメイン名を変更するとどうなりますか?また、電子メールの提案は少し危険に思われます。私の電子メールがfoo@outlook.comで、MicrosoftがOutlook用のfooパッケージを作成したいとしたらどうでしょうか。どちらもcom.outlook.fooにありますよね?
HappyDog

6
Com = commercial application (just like .com, most people register their app as a com app)
First level = always the publishing entity's' name
Second level (optional) = sub-devison, group, or project name
Final level = product name

たとえば、彼のAndroidランチャー(ホーム画面)はCom.Google.android.launcherです。


2

通常、最初の2つのパッケージ「単語」は、逆のWebアドレスです。(サブドメインがあった場合、慣例としてここに3があります。)

したがって、stackoverflowが生成するものは、おそらくパッケージcom.stackoverflow.whatever.customnameにあります。

asp.netが生成するものは、net.asp.whatever.customname.omg.srslyと呼ばれる場合があります

mysubdomain.toplevel.comからの何かはcom.toplevel.mysubdomain.whateverになります

その単純な慣習を超えて、空は限界です。これは私が正確に思い出せない何かのための古いLinux慣習です...


提案をありがとう。しかし、公式のAndroidサイトからの参照はありますか?
Charles Yeung

私が見つけることができる最も近いものは、ここでの宣伝です:developer.android.com/guide/topics/manifest/… しかし、パッケージライブラリとして存在するすべてのものを使用すると、それらは常に同じ規則に従っていることがわかります。httpはorg.apache.httpから、Andengineはorg.anddev.andengineなどです
Eric

Androidでパッケージ名に使用できる文字についてのルールは何ですか?それは単に英語の文字、「。」および許可されている「_」文字?
Android開発者

役立つコメントをありがとうございました。関連する問題が発生spectorskyしています。アプリケーションのパッケージcalendarがDevice File Explorerでとして参照されていcom.tmp.spectorsky.calendarます。なぜtmpレベルがここに表示されるのか理解できません。
Spectorsky

-1

ただし、Androidアプリが個人的な目的のみであるか、自分で作成した場合は、以下を使用できます。

me.app_name.app

10
あなたが言うことは、作られた声明は純粋にあなたの意見だと言うことができます:)
Rahul Reddy 14

@RahulReddyなぜそれが反対投票なのか、私には理解できません。グーグルは誰もがcomを使うことを制限しません。またはorg。!パッケージ名として好きなものを使用できます
batmaci

1
@batmaciこれは、任意のパッケージ名を使用するように人々を誤解させるため、これは過小評価されていると思います。これは技術的に可能であり、Googleがドメインがあなたのものであるかどうかを確認しない場合でも、名前空間の汚染につながるため、悪い習慣と見なす必要があります。
Oliver Hausler 2018年

3
@OliverHausler名前空間の汚染とはどういう意味ですか?どこで、どうやって?なぜこれがそんなに重要なのですか?私が知っているのは、ウェブサイトがあり、アプリへのディープリンクを実行したい場合、それにより物事は簡単になりますが、それがなくても簡単にディープリンクを作成できることを知っています。上記の回答では、理由を説明する回答はありませんが、グーグルが言ったことを繰り返すだけです。
batmaci

1
@batmaciこの状況を想像してみてください。DevXがアプリ(クリエイティブ名ではない)を作成し、その中に「me.app_name.services.MyService」を作成します。Dev Xと同じニックネームを持っているDev Y(たとえば、sisisisiは私から複数の場所で取得された)は、Dev Xのアプリ名と同じ、クリエイティブではない名前のアプリを作成します。Dev Yは自分のアプリの「me.app_name.services.MyService」を作成します。ユーザーは両方のアプリをインストールし、そのうちの1つは名前でサービスを開始しようとします-どのサービスが開始されますか?ありそうにありませんが、Androidアプリの数を検討してください。パッケージ名にメールを使用すると、この可能性を排除できます。
sisisisi 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.