2

自分の会社の名前でアプリを作成したいのですが、Android Studio ではドメインの使用が推奨されています。例:

ドメイン: example.com

アプリ: マイアプリ

com.example.myApp のパッケージ名を与える

それはすべて問題ありませんが、私の会社名は数字で始まり、Android Studio は数字を使用できないことを通知します。

com.1example.myApp

これで「oneexample」を試すことができ、できれば oneexample.com の誰も Android アプリの開発を開始しませんが、名前の先頭に数字が含まれているように見える開発者の数を考えると、おそらくこれは以前に出てきたものです。ですから、もしよろしければお尋ねください:

1) パッケージの命名にはどのように取り組めばよいですか?

2) 好奇心から、パッケージ名を数字で開始できないのはなぜですか?

ありがとうございます!

クエンティン。

4

1 に答える 1

9

1) パッケージの命名にはどのように取り組めばよいですか?

簡単な回答: Android パッケージ/サブパッケージ名は、ASCII ラテン文字で始める必要があります。ドメイン名が数字で始まる場合のパッケージの命名に関する Google からのガイダンスはないようであるため、開発者はこれを自分で解決する必要があります。

数字で始まるドメイン名の実際の例と、開発者が Android で使用することを決定したパッケージ名を次に示します。

http://www.11bitstudios.com/
https://play.google.com/store/apps/details?id=com.elevenbitstudios.AnomalyWarzoneEarthHD

http://www.23snaps.com/
https://play.google.com/store/apps/details?id=com.snaps23.android

http://www.36you.com/
https://play.google.com/store/apps/details?id=com.thirtysixyougames.google.slotanddragons

さらなる背景

Java では、パッケージ名を ASCII ラテン文字またはアンダースコア文字で始めることができます。パッケージの命名 (Java™ チュートリアル > Java 言語の学習 > パッケージ)から:

場合によっては、インターネット ドメイン名が有効なパッケージ名ではないことがあります。これは、ドメイン名にハイフンやその他の特殊文字が含まれている場合、パッケージ名が Java 名の先頭として使用できない数字またはその他の文字で始まっている場合、またはパッケージ名に予約済みの Java キーワードが含まれている場合に発生する可能性があります。 「int」など。この場合、アンダースコアを追加することをお勧めします。

次の「パッケージ名の正当化」の例も示します。

Domain Name                         Package Name Prefix
---------------------------         ---------------------------
hyphenated-name.example.org         org.example.hyphenated_name
example.int                         int_.example
123name.example.com                 com.example._123name

ただし、Android は Java よりも制限が厳しく、パッケージ/サブパッケージ名はアンダースコアで始まることはできません。問題 65570から- Android オープン ソース プロジェクト - 問題トラッカー - Google プロジェクト ホスティング:

Java ではアンダースコアで始まるパッケージ名を使用できますが、Android アプリケーション パッケージ (追加の制限がある) では使用できません。パッケージが _ で始まるアプリをインストールしようとすると、デバイスの PackageManager によって拒否されます。そのため、アプリを作成するときに Studio でのパッケージ名の検証を強化し、前もってこれらのパッケージを作成して後で問題が発生しないようにしました。

残念ながら、Android の数字で始まるドメインのパッケージ名を合法化することに関して、Google から提案された規則はないようです。

2) 好奇心から、パッケージ名を数字で開始できないのはなぜですか?

Chapter 3. Lexical Structure (The Java® Language Specification - Java SE 7 Edition)から:

識別子は、長さに制限のない一連の Java 文字と Java 数字であり、最初の文字は Java 文字でなければなりません

<中略>

「Java 文字」には、大文字と小文字のASCII ラテン文字AZ (\u0041-\u005a) と az (\u0061-\u007a) と、歴史的な理由から、ASCII アンダースコア (_、または \u005f) とドル記号が含まれます。 ($、または \u0024)。$ 文字は、機械的に生成されたソース コードでのみ使用するか、まれに、レガシー システムの既存の名前にアクセスするために使用する必要があります。

繰り返しになりますが、これは Android パッケージ名でさらに制限されています。<マニフェスト>から| Android 開発者:

package アプリケーションの完全な Java 言語スタイルのパッケージ名。名前は一意である必要があります。名前には、大文字または小文字 (「A」から「Z」)、数字、およびアンダースコアー (「_」) を含めることができます。ただし、個々のパッケージ名の部分は文字でのみ開始できます。

Java に対する Android の追加の制限に関する情報を提供してくれた @Quentin に感謝します。

于 2015-02-23T03:05:13.933 に答える