mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-24 02:25:28 +00:00
129 lines
4.4 KiB
Groovy
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'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|