当dev名称以数字开头时,Android工作室中的包名称?

时间:2015-02-23 02:59:09

标签: android android-studio package-name

我想以我公司的名义创建应用,Android Studio建议使用您的域名,例如:

域名:example.com

App:myApp

提供包名称com.example.myApp

这一切都很好,但我的公司名称以数字开头,Android Studio告诉我我没有数字,例如:

com.1example.myApp

现在我可以试试" oneexample"并且希望oneexample.com中没有人开始开发Android应用程序,但考虑到有多少开发人员在他们的名字开头有一个数字,可能这已经出现过了。所以,如果我可以请问:

1)我应该如何处理命名我的包?

2)出于好奇,为什么你的包裹名称不能以数字开头?

谢谢堆!

昆汀。

1 个答案:

答案 0 :(得分: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拉丁字母或下划线字符开头。来自Naming a Package (The Java™ Tutorials > Learning the Java Language > Packages)

  

在某些情况下,互联网域名可能不是有效的包名。如果域名包含连字符或其他特殊字符,则会出现这种情况; 如果包名称以数字或其他字符开头,这些字符非法用作Java名称的开头,或者包含name包含保留的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更具限制性,包/子包名称可能不以下划线开头。来自Issue 65570 - Android Open Source Project - Issue Tracker - Google Project Hosting

  

虽然Java允许以下划线开头的软件包名称,但Android应用程序软件包(有其他限制)却不允许。当您尝试安装其包以_开头的应用程序时,设备PackageManager将拒绝它。出于这个原因,我们在创建应用程序时加强了Studio中的包名称验证,这样您就不会最终创建这些包,然后再受苦。

不幸的是,Google似乎没有任何关于合法化以Android号码开头的域名的包名称的约定。

  

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软件包名称中受到进一步限制。来自<manifest> | Android Developers

  

package    应用程序的完整Java语言样式包名称。名称应该是唯一的。名称可能包含大写或小写字母('A'到'Z'),数字和下划线('_')。但是,单个包名称部分只能以字母开头。

感谢@Quentin,提供有关Android对Java的其他限制的信息。