背景
包名,进程名,apk名的关系是一体三面,实际描述的都是一个软件的id,但是三者又有不同。
包名
每个应用的apk都会有一个对应的包名,用作应用的唯一标识符。无论是在 Android 设备上安装应用、运行应用还是在应用商店中管理应用,都是通过包名来识别具体的应用。因此,包名在整个应用生命周期中起着非常关键的作用。在代码开发、应用部署和应用管理中使用。
设定是在androidmanifest.xml文件中,通过package属性指定。
java文件中也有包名:这个目录下的包大概率也是同一个包名
进程名
进程名是一个软件在运行中的名字,pid为1653的进程,进程的name是com.android.car ,这是运行中的软件的名字。
它关系到系统资源分配、进程沙盒和进程间通信等方面管理应用。
进程名可以在androidmanifest文件中设置:
如果没有指定process属性的话,默认使用包名作为进程名,很多情况下都是如此。
activity和service都可以指定进程的,因此会出现一个包名下的service会存在在两个进程中。这样做的目的通常是为了提高应用的响应能力,或者是出于安全和模块化的考虑。
apk名
文件名,用于识别和管理 APK 文件,是面向用户和开发者的。APK 名通常包含应用名称、版本等信息,便于人类理解和管理。
CarService(bp文件中)
在out目录下存在的软件应用的名字。
为什么会存在包名,进程名,apk名?
主要是面向的用户和使用的场景不一样,所以需要存在三个不同的名字。
包名:编写代码,部署以及应用管理中都需要用到。
进程名:运行时软件的名字。
apk名:打包成具体的产物时需要的名字。
虽然不一样,但是其中也会存在相互关系。比如两个不同的apk可以时同一个包名。同一个包名,但是跑在两个不同的进程中,存在两个不同的进程名。