Android-阅读类中的build.gradle属性 [英] Android - Read build.gradle properties inside class
问题描述
我想访问build.gradle属性,以便可以自动执行我的应用程序中的某些过程.
I would like to have access to build.gradle properties so I can automatize some processes in my app.
这是我目前的结构:
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 .我该如何实现?
I would like to access both on Java and build.gradle side the properties version and libs variables. How can I achieve this?
推荐答案
您可以执行类似的操作,但是在外部 buildscript
块
You can do somenthing like this, but outside the buildscript
block
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
,或者您可以使用一些自定义键,例如:
In java you can't access the build.gradle
files since they are used only at buildtime. Hovewer you can put same values in the BuildConfig
file. In this file there are some prebuilt values like BuildConfig.VERSION_NAME
or you can use some custom keys like:
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
将包含以下字段:
The automatically-generated <package_name>.BuildConfig.java
will contain the following fields based on the directive above:
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";
}
这篇关于Android-阅读类中的build.gradle属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!