安卓应用程序的包名应该是什么?

44

我想知道Android应用程序的包名应该是什么?通常我们使用com.appname或com.organizationName.appName,但是当我们将应用程序提交到市场时,有时会显示与包名相关的错误-请更改包名。 它不应以com等开头。

我想知道为什么会出现这种情况?正确的Android应用程序包名应该是什么?

如果有人知道这个问题的原因或答案,请告诉我。

7个回答

62

根据这里的说明: 包名使用全小写来避免与类或接口的名称冲突。

公司使用其反转的互联网域名作为包名的前缀 – 例如,com.example.mypackage表示example.com上一个程序员创建名为mypackage的包

在同一公司中发生的名称冲突需要通过公司内部约定来处理,例如在公司名称后面加上地区或项目名称(例如, com.example.region.mypackage)。

Java语言本身中的包以java.或javax.开头。

在某些情况下,互联网域名可能不是有效的包名。如果域名包含连字符或其他特殊字符,如果包名以数字或其他非法用于Java名称开头的字符开头,或者如果包名包含保留的Java关键字(例如“int”),则会发生这种情况。在这种情况下,建议的约定是添加下划线。例如:

输入图像描述


7
最后一个软件包名称在Android Studio中无效,请参见问题65570 - vault

11

Android遵循与Java相同的命名规范。

命名规范

包名使用全小写以避免与类或接口的名称冲突。

公司使用它们反转的互联网域名来开始它们的包名 - 例如,com.example.mypackage表示example.com上的程序员创建的名为mypackage的包。

在同一公司内发生的名称冲突需要通过约定来处理,可以在公司名称之后包括地区或项目名称(例如,com.example.region.mypackage)。

Java语言本身中的包以java.或javax.开头。

在某些情况下,互联网域名可能不是有效的包名。如果域名中包含连字符或其他特殊字符,如果包名以数字或其他在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

2
破折号和下划线允许使用吗? - user2513149

3

如您所述,包名通常采用“com.organizationName.appName”的形式 - 全部小写且无空格。听起来,您在上传应用时输入的包名与AndroidManifest中声明的不同。


其实几天前我正在提交我的应用程序,然后市场给了我一条消息,说我应该更改包名,“com”是不允许的。这就是为什么我想知道为什么会出现这种类型的消息,以及安卓应用程序的正确包名是什么?谢谢。 - anddev
@Mansi,看起来你尝试使用“com”作为你的包名。这可能是不允许的。包名以前更加细粒度化。 - spatulamania
是的,我知道只有com是不允许的。实际上,我的包名是“com.organizationName.appName”。在那个包名下我收到了错误信息。 - anddev

2

目前在应用商店中不允许上传以"com.example"开头的包名。 除此之外,以"com"开头的其他包名均是允许的。


如果您的顶级域名不是“com”呢? - Michael

2

包名是反转的域名,它是Playstore上每个应用程序的唯一名称。您不能上传两个具有相同包名的应用程序。 您可以从Playstore网址检查应用程序的包名。

https://play.google.com/store/apps/details?id=package_name

因此,您可以在上传之前轻松检查Playstore上是否有其他应用程序使用了这个包名。


如果您的域名以数字开头(或仅包含数字),该怎么办?我收到了“数字不能是包段中的第一个字符”的错误。我应该撒谎还是编造些东西? - Michael

1

请访问https://developers.google.com/mobile/add,并尝试填写“Android包名”。在某些情况下,可能会出现错误:“无效的Android包名”。

https://developer.android.com/studio/build/application-id.html中写道:

虽然应用程序ID看起来像传统的Java包名称,但应用程序ID的命名规则要严格一些:

  • 它必须至少有两个段(一个或多个点)。
  • 每个段必须以字母开头。
  • 所有字符都必须是字母数字或下划线[a-zA-Z0-9_]。

因此,“0com.example.app”和“com.1example.app”都是错误的。


0

使用带有0的包名可能会对sharedPreference造成问题。

(正确) con = createPackageContext("com.example.android.sf1", 0);

(存在问题但没有错误)

con = createPackageContext("com.example.android.sf01", 0);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接