[Gradle for Android 笔记系列]二 、Pack
2017-12-28 本文已影响18人
GYLEE
本文内容主要来源:Gradle for Android (中文版)、CSDN博客
在Gradle
被用作默认的 Android
构建系统之前,PackageName
的主要作用有两个:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.my.app"
android:versionCode="1"
android:versionName="1.0" >
- 作为应用的唯一标志和进程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
属性值