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 に感謝します。