【发布时间】:2011-12-25 21:15:34
【问题描述】:
我想知道android app的包名应该是什么?意味着通常我们使用 com.appname 或 com.organizationName.appName,但是当我们将应用程序提交到市场时,有时它会显示与包名称相关的错误 - 请更改包名称。不应该以 com 等开头。
我想知道为什么会这样? android 应用程序的包名应该是什么?
如果有人知道这个问题的原因或答案,请告诉我。
提前致谢。
【问题讨论】:
我想知道android app的包名应该是什么?意味着通常我们使用 com.appname 或 com.organizationName.appName,但是当我们将应用程序提交到市场时,有时它会显示与包名称相关的错误 - 请更改包名称。不应该以 com 等开头。
我想知道为什么会这样? android 应用程序的包名应该是什么?
如果有人知道这个问题的原因或答案,请告诉我。
提前致谢。
【问题讨论】:
如此处所述:包名全部小写,以避免与类或接口的名称冲突。
公司使用颠倒的互联网域名来开始他们的包名——例如,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 遵循与 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
【讨论】:
正如您所说,包名称通常采用“com.organizationName.appName”的形式 - 全部小写且没有空格。听起来你上传应用时输入的包名和AndroidManifest中声明的不一样。
【讨论】:
目前应用商店不允许上传以“com.example”开头的包名。 否则,所有其他以“com”开头的包名都是允许的。
【讨论】:
访问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”是错误的。
【讨论】:
包名是反向域名,它是Playstore上每个应用程序的唯一名称。您不能上传具有相同包名的两个应用程序。 您可以从 playstore url 查看应用程序的包名称
https://play.google.com/store/apps/details?id=package_name
因此您可以在上传之前轻松地在 Playstore 上检查此包名称是否已被其他应用使用。
【讨论】:
包名称为 0 可能会导致 sharedPreference 出现问题。
(好的)con = createPackageContext("com.example.android.sf1", 0);
(有问题但没有错误)
con = createPackageContext("com.example.android.sf01", 0);
【讨论】: