什么是local.properties文件
通過Android Studio創建一個Android工程后,在工程的根目錄中都會生成一個名稱為:local.properties
文件,該文件一般用來存放該Android工程私有的屬性配置,比如Android的sdk路徑等等。local.properties文件一般都是存儲到本地,禁止提交到服務器上。
讀取local.properties文件內容
def readLocalProperties(){
File file = rootProject.file('local.properties')
if(file.exists()){
//加載資源
InputStream inputStream = rootProject.file('local.properties').newDataInputStream();
Properties properties = new Properties()
properties.load(inputStream)
if (properties.containsKey("sdk.dir")){
println properties.getProperty("sdk.dir")
}
}
}
local.properties的應用
利用local.properties文件存儲到本地不提交的服務器的使用習慣,那么可以將一個項目的私有配置屬性,存儲到該文件中,比如:應用的包名、應用名稱等
下面是一個在local.properties中配置項目的包名的demo
創建local.properties文件中添加包名屬性
ndk.dir=/Users/trunx/android/android-sdk/ndk-bundle
sdk.dir=/Users/trunx/android/android-sdk
pakcagename=com.yumodev.angradle.test
在項目的build.gradle中解析local.properties
- 首先定義函數parseLocalProperties解析出來應用包名
def parseLocalProperties(){
File file = rootProject.file('local.properties')
if(file.exists()){
InputStream inputStream = rootProject.file('local.properties').newDataInputStream();
Properties properties = new Properties()
properties.load(inputStream)
if(properties.containsKey("packagename")){
println 'packageName:'+properties.getProperty("packagename")
ext.packagename = properties.getProperty("packagename")
println 'packageName:'+project["packagename"]
}
}
}
- 執行parseLocalProperties函數
allprojects {
repositories {
jcenter()
}
parseLocalProperties()
}
在Module的build.gradle中修改應用的包名
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig{
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
if(project.hasProperty('packagename')){
println project['packagename']
applicationId project['packagename']
}else{
println "has not package_name"
applicationId "com.yumodev.angradle"
}
}
...
}