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进程间通信--消息机制及IPC机制实现
  2. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
  3. Android线程的学习
  4. android 进程之间通信--Android(安卓)使用【AIDL】调用外部服务
  5. Android线程
  6. Android进程管理机制及优化(HTC&其它可参考)
  7. 有关Android线程的学习
  8. Android平台中进程与线程的基本知识
  9. 有关Android线程的学习

随机推荐

  1. ant android
  2. Android学习笔记(6)——Android——Login
  3. Error:Cause: buildToolsVersion is not
  4. 如何在一个声卡添加pa codec设备
  5. Android源码开发中单个模块的编译自动化
  6. Android(安卓)ConstraintLayout 降低布局
  7. Android(安卓)-- View
  8. Error while executing process /Users/x
  9. Android(安卓)使用ORMLite 操作数据库
  10. Android(安卓)使用的Project build.gradl