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 及更高版本中获取当前启动器的包名?