Android Studio中manifest文件中的package包名和module中的build.gradle中applicationId的区别

原创 2016年10月20日 15:09:14

在还没有从eclipse转到Android Studio开发的时候,我们都知道一个项目的包名定义在AndroidManifest文件中的package,如下图:


我们来看下定义:

包名(package):指定本应用内java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。 

在两个不同的Application之间,用Application A的Activity A调用Application B的Activity B的时候,在AndroidManifest.xml中的package名称不能一样,否则安装完一个apk之后,再去安装另一个Application的apk的时候,会提示不存在,会有冲突,(install的时候,以内部package名字等信息为准,不是apk的名字为准),即使apk名字不同,AndroidManifest.xml中的package名相同会提示冲突。

所以,不同的Application,AndroidManifest.xml中的package名一定要不同,当一个Application中有多个package的时候,以这个Application的入口(MAIN+LAUNCHER的intent-filter)所在的包名为AndroidManifest.xml中的package名。如果一个Application没有入口程序,如packages/apps/Bluetooth,那以哪个包名作为AndroidManifest.xml中的package名都可以。

同时R文件对应的引用地址也是包名地址,所以每次更改工程包名我都十分痛苦,要替换所有文件中R文件的引用路径,如下图:


但是Android Studio却拯救了我,当我把工程从eclipse转到Android Studio之后,他出现了一个新的定义:ApplicationId,他允许我们在不改变AndroidManifest文件中的package情况下,更改applicationID,不同的applicationID相当于不同的包名程序,具体官方文档翻译:http://blog.csdn.net/maosidiaoxian/article/details/41719357


可以清楚地看到,我们的package包名在工程中的作用只剩下索引R文件,而ApplicationId成为了真正的包名,并且要注意的是,在集成jpush第三方sdk的时候,需要我们提供包名等信息,这里要引用applicationId

因此,总的来说就一句话:在Android Studio中build.gradle构建工程后,manifest文件中的packagename只用作R文件的引用包名,而applicationId变成了这个程序真正的包名。

版权声明:本文为博主原创文章,未经博主允许不得转载。

修改manifest中package="application.name",在java代码中引用R出错!解决

在项目中,通常要修改项目所在的包,比如刚开始可能是com.baidu.android,  后来就需要修改为com.google.android. 以前我是改的:先右击com.baidu.android...
  • Jason_WKS
  • Jason_WKS
  • 2012年06月14日 15:42
  • 10957

Android package属性、package name和Application ID三者的联系及区别

名词解释 package属性:在AndroidManifest.xml文件中。 package name:应用程序的包名。 Application ID:模块defaultConfig块下的appli...
  • qq_17250009
  • qq_17250009
  • 2016年12月27日 15:51
  • 10230

android Manifest.xml全局配置文件中根标签中package属性及<original-package>标签注意点

Manifest.xml 中    标签中package属性用于设置应用程序的进程名,即在运行时使用ddms查看到的进程名。    标签用以设置应用源码包名,即Java文件所在的源码程序包层次,a...
  • snowgeneral
  • snowgeneral
  • 2012年04月11日 11:22
  • 7067

Android APK应用安装原理(1)-解析AndroidManifest原理-PackageParser.parserPackage

Android 安装一个APK的时候首先会解析APK,这里要做很多事情,其中一个事情就是解析Manifest.xml文件,并将所有APK的Manifest封装到各种对象中并保存在内存当中 解析Man...
  • shanshan_blog
  • shanshan_blog
  • 2016年11月01日 17:34
  • 1019

Android一键修改包名(package name)并自动import R文件和修改manifest.xml中的包名

有时候我们需要变更package name,如果直接从manifest中修改,不仅Java文件中不会自动更换import 包名.R,引起报错,而且已经再manifest中注册的Activity、Ser...
  • u013724061
  • u013724061
  • 2015年01月09日 10:46
  • 5134

关于Android studio彻底修改包名的解决办法

解决在android studio下彻底修改包名的方法
  • u014725798
  • u014725798
  • 2015年09月03日 16:46
  • 8546

安卓app设置版本号,通过build.gradle设置

我们一般在发布app之前,都会设置版本号。versionCode和versionName。简单解释一下: android:versionCode:主要是用于版本升级所用,是INT类型的,第一...
  • wind_fish
  • wind_fish
  • 2016年09月21日 15:14
  • 3357

Error:Execution failed for task ':app:processDebugManifest'. Manifest merger failed with multipl

Android studio项目中引用自己的Library编译时出现的一些问题 Message Gradle build Error:Execution failed for task ‘:app:p...
  • guojiahao_2015
  • guojiahao_2015
  • 2017年05月14日 04:28
  • 1147

Android 总结:Manifest文件中,application和activity标签属性详解

一、application 标签属性 < application /> :应用的声明。 这个元素包含了子元素,这些子元素声明了应用的组件,元素的属性将会影响应用下的所有组件。很多属性为组件...
  • u014136472
  • u014136472
  • 2015年11月15日 20:01
  • 6600

友盟安卓推送的“多包名”使用方式解决R文件报错问题

友盟安卓推送的“多包名”使用方式解决R文件报错问题
  • mingyue_1128
  • mingyue_1128
  • 2016年11月03日 18:36
  • 970
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Studio中manifest文件中的package包名和module中的build.gradle中applicationId的区别
举报原因:
原因补充:

(最多只允许输入30个字)