mirror of
https://github.com/material-components/material-components-android.git
synced 2026-01-09 07:11:07 +08:00
173 lines
5.0 KiB
Groovy
173 lines
5.0 KiB
Groovy
buildscript {
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath libs.android.gradle.plugin
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
mavenLocal()
|
|
}
|
|
}
|
|
|
|
ext {
|
|
compileSdkVersion = 35
|
|
minSdkVersion = 23
|
|
targetSdkVersion = 33
|
|
|
|
// Enforce the use of prebuilt dependencies in all sub-projects. This is
|
|
// required for the doclava dependency.
|
|
usePrebuilts = "true"
|
|
|
|
mavenRepoUrl = (project.hasProperty('mavenRepoUrl')
|
|
? project.property('mavenRepoUrl') : '/tmp/myRepo/')
|
|
|
|
// Current version of the library (could be in-development/unreleased).
|
|
mdcLibraryVersion = '1.14.0-alpha08'
|
|
mdcLibraryPackage = "com.google.android.material"
|
|
mdcLibraryDir = "com/google/android/material"
|
|
}
|
|
|
|
task clean(type: Delete) {
|
|
delete rootProject.buildDir
|
|
}
|
|
|
|
private def getTransformedProjectPath(projectPath) {
|
|
def pathComponents = projectPath.tokenize('/')
|
|
def result = ''
|
|
def currentPath = ''
|
|
pathComponents.each { component ->
|
|
if (currentPath == '') {
|
|
currentPath += component
|
|
} else {
|
|
currentPath += '-' + component
|
|
}
|
|
result += ':' + currentPath
|
|
}
|
|
return result
|
|
}
|
|
|
|
/**
|
|
* Return the project dependency for the given project path.
|
|
*/
|
|
def fromPath(path) {
|
|
return getTransformedProjectPath(path)
|
|
}
|
|
|
|
def getArchivesBaseName(name) {
|
|
if (name == 'lib') {
|
|
return 'material'
|
|
}
|
|
def pathComponents = name.tokenize('-')
|
|
def knownComponents = ['lib', 'java', 'com', 'google', 'android', 'material']
|
|
def firstUnknownComponent = knownComponents.size();
|
|
for (def i = 0; i < knownComponents.size() && i < pathComponents.size(); i++) {
|
|
if (pathComponents[i] != knownComponents[i]) {
|
|
firstUnknownComponent = i;
|
|
break;
|
|
}
|
|
}
|
|
def result = 'material'
|
|
for (def i = firstUnknownComponent; i < pathComponents.size(); i++) {
|
|
result = result + '-' + pathComponents[i];
|
|
}
|
|
return result;
|
|
}
|
|
|
|
subprojects {
|
|
tasks.withType(Test) {
|
|
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
|
|
forkEvery = 80
|
|
maxHeapSize = "2048m"
|
|
minHeapSize = "1024m"
|
|
}
|
|
}
|
|
|
|
subprojects {
|
|
version = rootProject.ext.mdcLibraryVersion
|
|
group = 'com.google.android.material'
|
|
|
|
// Disable strict dependency resolution version constraints for test projects
|
|
if (project.name.contains("tests")) {
|
|
project.configurations.all {
|
|
dependencyConstraints.configureEach { dependencyConstraint ->
|
|
dependencyConstraint.version { versionConstraint ->
|
|
versionConstraint.strictly("")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
project.plugins.whenPluginAdded { plugin ->
|
|
def isAndroidLibrary = "com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)
|
|
def isAndroidApp = "com.android.build.gradle.AppPlugin".equals(plugin.class.name)
|
|
def isAndroidTest = "com.android.build.gradle.TestPlugin".equals(plugin.class.name)
|
|
|
|
if (isAndroidLibrary || isAndroidApp) {
|
|
// Enable code coverage for debug builds only if we are not running inside the IDE,
|
|
// since enabling coverage reports breaks the method parameter resolution in the IDE
|
|
// debugger. Note that we avoid doing this for Android Test projects as it causes
|
|
// crashes on Dalvik ('Class ref in pre-verified class resolved to unexpected implementation')
|
|
project.android.buildTypes.debug.testCoverageEnabled = !hasProperty('android.injected.invoked.from.ide')
|
|
}
|
|
|
|
if (isAndroidLibrary || isAndroidApp || isAndroidTest) {
|
|
project.android {
|
|
compileSdkVersion rootProject.ext.compileSdkVersion
|
|
|
|
defaultConfig.minSdkVersion rootProject.ext.minSdkVersion
|
|
defaultConfig.targetSdkVersion rootProject.ext.targetSdkVersion
|
|
|
|
// This disables the builds tools automatic vector -> PNG generation
|
|
defaultConfig.generatedDensities = []
|
|
|
|
compileOptions.sourceCompatibility JavaVersion.VERSION_1_8
|
|
compileOptions.targetCompatibility JavaVersion.VERSION_1_8
|
|
|
|
aaptOptions.additionalParameters "--no-version-vectors"
|
|
|
|
android {
|
|
lint {
|
|
checkOnly 'NewApi'
|
|
}
|
|
}
|
|
|
|
if (isAndroidLibrary) {
|
|
def JAVA_RESOURCES_TEMP_DIR = "$buildDir/javaResources"
|
|
|
|
task writeVersionFile() {
|
|
def versionFileDir = JAVA_RESOURCES_TEMP_DIR + '/META-INF'
|
|
def versionFileName = mdcLibraryPackage + '_' + getArchivesBaseName(project.name) + '.version'
|
|
|
|
new File(versionFileDir).mkdirs()
|
|
new File(versionFileDir + '/' + versionFileName).text = mdcLibraryVersion + "\n"
|
|
}
|
|
|
|
libraryVariants.all {
|
|
it.processJavaResourcesProvider.get().dependsOn(writeVersionFile)
|
|
}
|
|
|
|
project.android.sourceSets.main.resources.srcDir JAVA_RESOURCES_TEMP_DIR
|
|
}
|
|
}
|
|
|
|
if (isAndroidLibrary) {
|
|
project.afterEvaluate {
|
|
project.tasks.all({
|
|
if (it instanceof com.android.build.gradle.tasks.GenerateBuildConfig) {
|
|
// Disable generating BuildConfig.java
|
|
it.enabled = false
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|