Gradle 被用作默认的 Android 构建系统之前,PackageName 的主要作用有两个:

<?xml version="1.0" encoding="utf-8"?>
  • 作为应用的唯一标志和进程ID`
  • R 资源及四大组件中被用作包名

Gradle 被用作默认的 Android构建系统之后,一些就发生了改变:

apply plugin: 'com.android.application'android {    compileSdkVersion 19    buildToolsVersion "19.1"    defaultConfig {        applicationId "com.example.my.app"        minSdkVersion 15        targetSdkVersion 19        versionCode 1        versionName "1.0"    }

AppliactionIdPackageName的分工:

  • applicationId负责 App 的唯一标示进程 ID
  • package name 负责 R 的包名以及 Manifest 中 Activity 等四大组件的相对包名

当我们在同一设备安装同一 App 的不同版本时,ApplicationId 可以很好的实现这一需求:

不同的 flavor 或者 build type 可以拥有不同的 application id,也就是不同的进程 id。

productFlavors {    pro {        applicationId = "com.example.my.pkg.pro"    }    free {        applicationId = "com.example.my.pkg.free"    }}buildTypes {    debug {        applicationIdSuffix ".debug"    }}

如果 build.gradle 中没有指定 applicationId,那么 applicationId 的默认值就是 manifestpackage 属性值

总结

有了上面的内容,我们可以简单总结如下:
applicationId 负责 App 的唯一标示进程 ID
package name 负责R 的包名以及 Manifest 中 Activity 等四大组件的相对包名,如果没有指定 applicationId 那么 package name 会负责全部的职责。


参考资料

Gradle for Android (中文版)

ApplicationId 与 PackageName 的区别

更多相关文章

  1. Android学习系列(39)--Android主题和样式之系统篇(上)
  2. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
  3. 经典Android系统源代码
  4. android 进程之间通信--Android 使用【AIDL】调用外部服务
  5. 关于自己Android开发的感想,怎样深入系统学习android

随机推荐

  1. Android问题集锦之三十三:避免每次启动AS
  2. 浅谈关于listview和button控件的背景
  3. Android简明开发教程三:第一个应用Hello W
  4. Android(安卓)OpenGL ES 开发(二): OpenGL
  5. android图像与图像处理系列(一、Bitmap和B
  6. 从assets文件夹中读取文件
  7. Android(安卓)属性动画(Property Animatio
  8. RoboGuice logo Android上的Guice RoboGu
  9. android编程常见问题-程序在模拟器中不显
  10. android开发真机调试