build.gradle使用gradle.property中定義的字段及亂碼問題的解決


                     gradle.property文件可以用來定義一些字段 而這些字段可以被build.gradle文件引用到 

  例如:給大家貼出來一個gradle.property文件

# Project-wide Gradle settings.
APP_NAME=example_name
IS_DEMO=false
VERSION_CODE=99
VERSION_NAME=1.1.1
STORE_FILE=test

文件里有這些字段  前面是字段名  后面的是字段對應的值 我們可以在build.gradle文件里直接使用這些字段的值

例如:我們在build.gradle中使用VERSION_NAME、  VERSION_CODE、APP_NAME、IS_DEMO 等字段

注意顏色  紅色的字段是會自動從gradle.property中讀取的,但是藍色的字段是我們在AndroidManifest.xml文件中用到的 meta-data字段

  

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion '25.0.0'

defaultConfig {
minSdkVersion 19
targetSdkVersion 21
versionCode VERSION_CODE
versionName VERSION_NAME
manifestPlaceholders = [APP_NAME: getMy(), IS_DEMO: IS_DEMO] //manifestPlaceholders里邊對應的字段是AndroidManifest.xml中用到的meta-data字段(藍色的部分)
}

buildTypes {
release {
minifyEnabled false
proguardFile 'proguard-project-release.txt'
}

}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}

}

def getMy() {
return new String(APP_NAME.getBytes("iso8859-1"), "UTF-8")
}

dependencies {
.......
}

 

下面是在AndroidManifest.xml中用到的meta-data字段

  <application
            android:name=".StartApp"
            android:allowBackup="false"
            android:icon="@drawable/xxxxx"
            android:label="${APP_NAME}">

<!-- 演示版標識 -->
        <meta-data
                android:name="SUSPEND_TAG"
                android:value="${IS_DEMO}"/>

 

   寫到這里大家會疑惑為什么有這句話

manifestPlaceholders = [APP_NAME: getMy(), IS_DEMO: IS_DEMO] 
這里的APP_NAME是meta-data的字段 為什么我還要再定義一個getMy()方法去取值
這里是因為如果直接引用gradle.property里的值會出現中文亂碼

至此 我們完成了build.gradle文件對gradle.property文件字段值的讀取

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM