本文內(nèi)容主要來源:Gradle for Android (中文版)浸船、CSDN博客
在Gradle
被用作默認的 Android
構建系統(tǒng)之前妄迁,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
構建系統(tǒng)之后,一些就發(fā)生了改變:
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
可以很好的實現(xiàn)這一需求:
不同的 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
屬性值