我想知道Android应用程序的包名应该是什么?通常我们使用com.appname或com.organizationName.appName,但是当我们将应用程序提交到市场时,有时会显示与包名相关的错误-请更改包名。 它不应以com等开头。
我想知道为什么会出现这种情况?正确的Android应用程序包名应该是什么?
如果有人知道这个问题的原因或答案,请告诉我。
根据这里的说明: 包名使用全小写来避免与类或接口的名称冲突。
公司使用其反转的互联网域名作为包名的前缀 – 例如,com.example.mypackage表示example.com上一个程序员创建名为mypackage的包
。
在同一公司中发生的名称冲突需要通过公司内部约定来处理,例如在公司名称后面加上地区或项目名称(例如, com.example.region.mypackage)。
Java语言本身中的包以java.或javax.开头。
在某些情况下,互联网域名可能不是有效的包名。如果域名包含连字符或其他特殊字符,如果包名以数字或其他非法用于Java名称开头的字符开头,或者如果包名包含保留的Java关键字(例如“int”),则会发生这种情况。在这种情况下,建议的约定是添加下划线。例如:
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
如您所述,包名通常采用“com.organizationName.appName”的形式 - 全部小写且无空格。听起来,您在上传应用时输入的包名与AndroidManifest中声明的不同。
目前在应用商店中不允许上传以"com.example"开头的包名。 除此之外,以"com"开头的其他包名均是允许的。
包名是反转的域名,它是Playstore上每个应用程序的唯一名称。您不能上传两个具有相同包名的应用程序。 您可以从Playstore网址检查应用程序的包名。
https://play.google.com/store/apps/details?id=package_name
因此,您可以在上传之前轻松检查Playstore上是否有其他应用程序使用了这个包名。
请访问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的包名可能会对sharedPreference造成问题。
(正确) con = createPackageContext("com.example.android.sf1", 0);
(存在问题但没有错误)
con = createPackageContext("com.example.android.sf01", 0);