在还没有从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变成了这个程序真正的包名。

更多相关文章

  1. Android采用Pull解析和生成xml文档
  2. Android内存泄露解读
  3. Android(安卓)Q私有目录与公共目录文件的交互(读取,复制,保存等)——
  4. PC客户端与Android服务端的Socket同步通信(一)
  5. Android修炼之混淆
  6. Android(安卓)ProGuard实例教程
  7. Android(安卓)Studio显示行数
  8. Android(安卓)NDK——使用Android(安卓)Studio引用so库,jar包及mo
  9. Android(安卓)CPU 架构详解

随机推荐

  1. android studio 0.6.0 下载地址
  2. 手工下载android sdk或者system images等
  3. Android SeekBar
  4. Android SDK Manager 更新SDK问题
  5. mac 编译 Android 系统杂记
  6. Android设计中的.9.png
  7. textAppearance 解答,android系统主题样式
  8. Android 天气预报源码
  9. GridView示例2(自动增长)
  10. Android UI之RadioGroup