Android应用程序包名

3
当使用Java创建Android应用程序时,您需要将类放入包中,例如com.example.appName
然而,在Android XML清单文件中,您还需指定包名。
据我了解,Android应用程序上传到Google Play商店时,使用的是包名作为应用的唯一标识符。
那么,哪个包名实际上可以识别您的应用程序/APK文件?您代码中的包名是否可以与清单中的包名不同?
6个回答

7
只有AndroidManifest.xml中的包名是有效的,而且不能更改。你放置Java类的包名可以随意。

那么代码中的包名和清单中的包名完全独立吗?而且代码中的包名基本上被忽略了? - Liam Flaherty
2
@LiamFlaherty 它们不会被忽略。例如,您的清单必须声明活动的完整(Java)包名称。只要它们相同,您可以写一些简短的东西,比如“.MainActivity”,它会假定您的意思是“[包名称].MainActivity”。如果它们不同,您将不得不写下完整路径。Java包名称:按您喜欢的方式组织代码。清单包名称:Play Store应用程序标识符。 - zapl

2

Play商店从清单文件中的标识符中获取包名。

如果您的源文件与包名相同或不同都没有关系。

因此,您可以将源文件管理/排列到任何任意的包中。

通常,将源文件放在与清单文件相同的包/子包中更容易,这样从清单文件引用它们就更容易,因为您不必为活动/服务等指定完全限定类名


1
which package name actually identifies your app/APK file?

Play Store只会接受Android清单文件中的应用程序包名,例如package="com.example.appName"

 can the package names in your code be different to the package name in the manifest?

是的,您可以为您的代码使用不同的包,但需要在manifest.xml中声明时提供绝对包名称。

android:name="org.demo.MyFile"

那么清单文件中的包名不能与代码中的任何包名完全不同吗? - Liam Flaherty

1

Android XML清单文件包是Google Play商店理解的关键,因为只有在上传安卓应用程序到谷歌商店时,Google Play商店才会读取这个文件。

所以,如果您的src包和清单文件不同,那么不会产生任何问题。

谢谢


0

我只是想再添加一些观察: * AndroidManifest中的字段“package”也用于生成类的包(例如R类) * 如果您在项目中使用google map v2,请注意授权中使用的包,因为需要相同。如果您不这样做,它将不会获取地图,但logcat中没有错误消息。(我今天和昨天遇到了这个问题)

GoogleMap v2版本8.1.1 Google Play服务4.4.52


0

这里的答案似乎与我的经验有些不同。

在Android Studio中,Build.Gradle文件中的applicationId是重要的属性,不应更改。

我们的清单包名与应用程序ID不同,我将它们改为相同的名称后,能够成功上传APK到Google Play而没有出现错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接