Gradle for Android(安卓)Developers (二): PackageName 与 ApplicationId
16lz
2021-12-04
在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" }
AppliactionId
和 PackageName
的分工:
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
的默认值就是manifest
的package
属性值
总结
有了上面的内容,我们可以简单总结如下:
applicationId
负责 App 的唯一标示
和进程 ID
,
package name 负责R 的包名以及 Manifest 中 Activity 等四大组件的相对包名
,如果没有指定 applicationId 那么 package name 会负责全部的职责。
参考资料
Gradle for Android (中文版)
ApplicationId 与 PackageName 的区别
更多相关文章
- Android进程间通信--消息机制及IPC机制实现
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
- Android线程的学习
- android 进程之间通信--Android(安卓)使用【AIDL】调用外部服务
- Android线程
- Android进程管理机制及优化(HTC&其它可参考)
- 有关Android线程的学习
- Android平台中进程与线程的基本知识
- 有关Android线程的学习