包名: 代码存储的位置、空间。包名可以修改,不影响APP使用。
ApplicatiodId: 是Android应用的唯一标识,用于系统区分是否为同一个app的。在APP发版后,applicationId就不可以修改了,修改后Android系统认为是新应用,不能覆盖老版本安装。
签名(签名文件): Android要求所有已安装的应用程序都使用数字证书做数字签名,数字证书的私钥由开发者持有,用户就是通过这个签名来进行App的升级操作。
包名与applicationId区分
在Eclipse中没有applicationId这个概念,在Eclipse中applicationId即等同于包名。
但是到了Android Studio中,这两个概念做个区分;包名定义在清单文件中,applicationId定义在app moudle的build.gradle中。在as中创建新项目,包名和applicationId默认是一致的,但是包名和applicationId可以修改为不同的值。
签名的作用
1、Android签名机制其实是对APK包完整性和发布机构唯一性的一种校验机制。
2、 应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,applicationId要相同!
3、应用程序模块化:Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块
4、代码或者数据共享:Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。
applicationId和签名文件
1、applicationId相同,签名文件相同:是同一个APP,可以进行升级,覆盖安装。
2、applicationId相同,签名文件不同:是同一个APP,但是在安装新签名apk时,会安装失败,只有删除旧签名的app,否则无法安装。
3、applicationId不同,签名文件相同:是两个不同的应用,可同时安装。
4、applicationId不同,签名文件不同:是两个不同的应用,可同时安装。