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

Que*_*tin 2 android android-studio package-name

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

域名:example.com

应用:myApp

给出com.example.myApp的包名

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

com.1example.myApp

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

1)我应该如何解决命名我的包裹?

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

谢谢堆!

昆汀.

unr*_*gnu 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
Run Code Online (Sandbox Code Playgroud)

但是,Android比Java更具限制性,并且包/子包名称可能不以下划线开头.从发行65570 - Android开源项目-事件跟踪-谷歌项目托管:

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

不幸的是,谷歌似乎没有任何关于合法化以Android数字开头的域名的包名称的约定.

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

第3章开始.词汇结构(Java®语言规范 - Java SE 7版):

标识符是无限长度的Java字母和Java数字序列,第一个必须是Java字母.

<剪断>

通过"Java字母"包括大写和小写ASCII拉丁字母 AZ(\ u0041-\u005a)和AZ(\ u0061-\u007a),并且,由于历史原因,ASCII下划线(_,或\ u005f)和美元符号($,或\ u0024).$字符只能用于机械生成的源代码,或者很少用于访问遗留系统上预先存在的名称.

同样,这在Android软件包名称中受到进一步限制.来自<manifest> | Android开发者:

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

感谢@Quentin,提供有关Android对Java的额外限制的信息.