android应用程序的包名应该是啥?

Posted

技术标签:

【中文标题】android应用程序的包名应该是啥?【英文标题】:What should be the package name of android app?android应用程序的包名应该是什么? 【发布时间】:2011-12-25 21:15:34 【问题描述】:

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

我想知道为什么会这样? android 应用程序的包名应该是什么?

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

提前致谢。

【问题讨论】:

【参考方案1】:

如此处所述:包名全部小写,以避免与类或接口的名称冲突。

公司使用颠倒的互联网域名来开始他们的包名——例如,com.example.mypackage for a package named mypackage created by a programmer at example.com

单个公司内发生的名称冲突需要按照该公司内的约定进行处理,可能通过在公司名称后包含地区或项目名称(例如,com.example.region.mypackage)。

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

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

【讨论】:

最后的包名在 Android Studio 中无效,见Issue 65570【参考方案2】:

Android 遵循与 Java 相同的命名约定,

命名约定

包名全部小写,避免与类名或接口名冲突。

公司使用颠倒的 Internet 域名来开始他们的包名——例如,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

【讨论】:

是否允许使用破折号和下划线?【参考方案3】:

正如您所说,包名称通常采用“com.organizationName.appName”的形式 - 全部小写且没有空格。听起来你上传应用时输入的包名和AndroidManifest中声明的不一样。

【讨论】:

其实前几天我在提交申请,然后市场给我的信息是你应该改变你的包名,“com”是不允许的。这就是为什么我想知道为什么会出现这种类型的消息以及 android 应用程序的正确包名称是什么?谢谢。 @Mansi 看起来你试图只使用“com”作为你的包名。这可能是不允许的。包名称过去更加细化。 是的,我知道只有 com 是不允许的。实际上我的包名是“com.organizationName.appName”。我收到了那个错误信息。【参考方案4】:

目前应用商店不允许上传以“com.example”开头的包名。 否则,所有其他以“com”开头的包名都是允许的。

【讨论】:

【参考方案5】:

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

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

虽然应用程序 ID 看起来像一个传统的 Java 包 name,应用ID的命名规则有点多 限制性:

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

所以,“0com.example.app”和“com.1example.app”是错误的。

【讨论】:

【参考方案6】:

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

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

因此您可以在上传之前轻松地在 Playstore 上检查此包名称是否已被其他应用使用。

【讨论】:

【参考方案7】:

包名称为 0 可能会导致 sharedPreference 出现问题。

(好的)con = createPackageContext("com.example.android.sf1", 0);

(有问题但没有错误)

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

【讨论】:

以上是关于android应用程序的包名应该是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 第五十六期 - Android之系统设置选项的包名

如何在 android 2.3 及更高版本中获取当前启动器的包名?

微信开放 添加android 两个应用包名一致,会有影响么

android 应用可以用一样的包名吗

关于android R.layout.没有出现自己写的布局解决方法

Android 在Android手机上获取其他应用的包名及版本号