[英]Android - Read build.gradle properties inside class
我希望可以訪問build.gradle屬性,以便可以自動執行我的應用程序中的某些流程。
這是我目前的結構:
rootProject / build.gradle
buildscript {
ext {
buildTools = "25.0.2"
minSdk = 16
compileSdk = 23
targetSdk = 23
versions = [supportLib : '25.0.0',
multidex : '1.0.1',
playServices : '10.0.1']
libs = [appcompat : "com.android.support:appcompat-v7:$versions.supportLib",
design : "com.android.support:design:$versions.supportLib"]
.... Other libraries and setup....
}
}
rootProject / app / build.gradle
...
dependencies {
// Support libraries
compile libs.appcompat
compile libs.design
.....
}
我想同時在Java和build.gradle上訪問屬性版本和libs變量。 我該如何實現?
使用gradle.properties文件僅在一個位置定義值,然后可以在gradle項目配置中使用此值。
然后,要能夠在Java android代碼中訪問這些值,請使用“ buildConfigField”定義。
gradle.properties
values=value1,value2
build.gradle
def String[] valuesArray = values.split(',')
android {
defaultConfig {
buildConfigField "String[]", "VALUES_ARRAY", "{" +
"\"" + valuesArray[0] + "\"," +
"\"" + valuesArray[1] + "\"" +
"}"
}
}
在java文件中
BuildConfig.VALUES_ARRAY
您可以執行類似操作,但是在buildscript
塊之外
ext {
// Version
supportVersion = '26.0.0'
// Support Libraries dependencies
supportDependencies = [
design: "com.android.support:design:${supportVersion}",
recyclerView: "com.android.support:recyclerview-v7:${supportVersion}",
cardView: "com.android.support:cardview-v7:${supportVersion}",
appCompat: "com.android.support:appcompat-v7:${supportVersion}",
supportAnnotation: "com.android.support:support-annotations:${supportVersion}",
]
firebaseVersion = '11.0.2';
firebaseDependencies = [
core: "com.google.firebase:firebase-core:${firebaseVersion}",
database: "com.google.firebase:firebase-database:${firebaseVersion}",
storage: "com.google.firebase:firebase-storage:${firebaseVersion}",
crash: "com.google.firebase:firebase-crash:${firebaseVersion}",
auth: "com.google.firebase:firebase-auth:${firebaseVersion}",
messaging: "com.google.firebase:firebase-messaging:${firebaseVersion}",
remoteConfig: "com.google.firebase:firebase-config:${firebaseVersion}",
invites: "com.google.firebase:firebase-invites:${firebaseVersion}",
adMod: "com.google.firebase:firebase-ads:${firebaseVersion}",
appIndexing: "com.google.android.gms:play-services-appindexing:${firebaseVersion}",
];
}
// Module build file
dependencies {
// ...
compile supportDependencies.appCompat
compile supportDependencies.design
compile firebaseDependencies.crash
}
在Java中,您無法訪問build.gradle
文件,因為它們僅在構建時使用。 但是,您可以將相同的值放在BuildConfig
文件中。 在此文件中,有一些預先構建的值,例如BuildConfig.VERSION_NAME
或者您可以使用一些自定義鍵,例如:
android {
...
defaultConfig {
...
// defining the build date
buildConfigField "long", "BUILD_DATE", System.currentTimeMillis() + "L"
// define whether this build is a production build
buildConfigField "boolean", "IS_PRODUCTION", "false"
// note that to define a string you need to escape it
buildConfigField "String", "API_KEY", "\"my_api_key\""
}
}
自動生成的<package_name>.BuildConfig.java
將基於上述指令包含以下字段:
public class BuildConfig {
// ... other generated fields ...
public static final long BUILD_DATE = 1469504547000L;
public static final boolean IS_PRODUCTION = false;
public static final String API_KEY = "my_api_key";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.