Android 包名称与应用程序 ID
作为一名 Android 开发者,您应该知道为您的应用选择的 Package Name 非常重要。我们指的是我们在 Manifest.xml 中声明的应用程序的包名称,而不是Java包名称(尽管它们是相同的)。但是 Package Name 和 Application ID 是有区别的。在本文中,我们将看看两者之间的区别。
应用程序 ID
每个 Android 应用程序都有一个唯一的应用程序 ID,它看起来像一个Java包名称,例如com.example.myapplication 。此 ID 在 Google Play 商店中唯一标识您的应用。如果您要上传应用的新版本,则应用 ID(以及您用来签名的证书)必须与原始 APK 相同——如果您更改应用 ID,Google Play 商店会将 APK 视为完全不同的 APK应用程序。您的应用程序 ID 使用模块的 build.gradle 文件中的 applicationId 属性定义,如下所示:
Java
android {
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
...
}
XML
applicationId 与您在 android studio 中的项目设置期间选择的 Java 样式的包名称完全匹配。但是,应用程序 ID 和包名称在此之后相互独立。您可以更改代码的包名称(您的代码命名空间),它不会影响应用程序 ID,反之亦然(但同样,一旦发布应用程序,您不应更改应用程序 ID)。但是,更改包名还有其他后果您应该知道,因此请参阅有关如何更改包名的部分。
Note: Context.getPackageName() method returns your application ID.
应用程序 ID 的使用
对于大型项目,修改包名的成本太高,几乎不可取。并且往往一个项目会有不同的版本,比如付费版和免费版。这样就可以通过简单的修改app/build.gradle中的applicationId来改变最终apk的包名,使其成为安卓手机不同的app。同时不影响开发和编译时的代码一致性。
包裹名字
包名是在 Android 应用项目创建之初在 AndroidManifest.xml 中定义的。包名只是为了组织你的代码。虽然默认情况下您的项目的包名称与应用程序 ID 匹配,但您可以更改它。但是,如果您想更改包名称,请注意包名称(由项目目录结构定义)应始终与 AndroidManifest.xml 文件中的包属性匹配,如下所示。
XML
Android 构建工具将 package 属性用于两件事:
- 它使用此名称作为应用程序生成的Java类的命名空间。
- 它使用它来解析清单文件中声明的任何相关类名。
示例:使用上面的清单,声明为
Note: package attribute should always match your project’s base package name where you keep your activities and other app code.