Magisk/build.gradle
2020-07-04 03:50:39 -07:00

129 lines
4.4 KiB
Groovy

import java.nio.file.Paths
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.vKotlin = '1.3.72'
ext.vNav = '2.3.0'
repositories {
google()
jcenter()
maven { url 'http://storage.googleapis.com/r8-releases/raw' }
maven { url 'https://kotlin.bintray.com/kotlinx' }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${vKotlin}"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:${vNav}"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
String.metaClass.toFile = { new File(delegate) }
def configFile = rootProject.findProperty('configPath')?.toFile() ?: rootProject.file('config.prop')
if (!configFile.exists())
throw new GradleException("Please setup config.prop")
def props = new Properties()
configFile.withInputStream { is -> props.load(is) }
ext.props = props
subprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
maven { url "http://oss.sonatype.org/content/repositories/snapshots" }
}
afterEvaluate { module ->
if (getPlugins().hasPlugin('com.android.library') ||
getPlugins().hasPlugin('com.android.application')) {
android {
compileSdkVersion 30
buildToolsVersion '30.0.0'
defaultConfig {
if (minSdkVersion == null)
minSdkVersion 17
targetSdkVersion 28
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
}
tasks.whenTaskAdded { task ->
if (task.name == 'processReleaseResources') {
task.finalizedBy tasks.create('optimizeReleaseResources') {
doLast {
def aapt2 = Paths.get(android.sdkDirectory.path,
'build-tools', android.buildToolsVersion, 'aapt2')
def zip = Paths.get(project.buildDir.path, 'intermediates',
'processed_res', 'release', 'out', 'resources-release.ap_')
def optimized = new File("${zip}.opt")
def cmd = exec {
commandLine aapt2, 'optimize', '--collapse-resource-names',
'--shorten-resource-paths', '-o', optimized, zip
ignoreExitValue true
}
if (cmd.exitValue == 0) {
optimized.renameTo("$zip")
}
}
}
}
}
if (getPlugins().hasPlugin('java')) {
tasks.withType(JavaCompile) {
// If building with JDK 9+, we need additional flags to generate compatible bytecode
if (JavaVersion.current() > JavaVersion.VERSION_1_8) {
options.compilerArgs += ['--release', '8']
}
}
}
if (module.name == 'app' || module.name == 'stub') {
android {
signingConfigs {
config {
if (props.containsKey('keyStore')) {
storeFile new File(props['keyStore'])
storePassword props['keyStorePass']
keyAlias props['keyAlias']
keyPassword props['keyPass']
}
}
}
buildTypes {
debug {
// If keystore exists, sign the APK with custom signature
if (signingConfigs.config.storeFile?.exists())
signingConfig signingConfigs.config
}
release {
signingConfig signingConfigs.config
}
}
lintOptions {
disable 'MissingTranslation'
}
}
}
}
}