Magisk/app/build.gradle.kts

246 lines
8.3 KiB
Plaintext
Raw Normal View History

import org.apache.tools.ant.filters.FixCrLfFilter
2020-12-27 05:33:30 +00:00
import java.io.PrintStream
2020-07-04 13:53:31 +00:00
plugins {
id("com.android.application")
kotlin("android")
2020-11-23 20:35:24 +00:00
kotlin("plugin.parcelize")
2020-07-04 13:53:31 +00:00
kotlin("kapt")
id("androidx.navigation.safeargs.kotlin")
}
kapt {
correctErrorTypes = true
useBuildCache = true
mapDiagnosticLocations = true
javacOptions {
option("-Xmaxerrs", 1000)
}
arguments {
arg("room.incremental", "true")
}
2020-07-04 13:53:31 +00:00
}
android {
defaultConfig {
applicationId = "com.topjohnwu.magisk"
vectorDrawables.useSupportLibrary = true
versionName = Config.version
versionCode = Config.versionCode
2021-07-24 10:51:00 +00:00
ndk.abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64"))
2020-07-04 13:53:31 +00:00
}
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
buildFeatures {
dataBinding = true
}
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
packagingOptions {
2021-07-24 10:51:00 +00:00
resources {
excludes.add("/META-INF/*")
excludes.add("/org/bouncycastle/**")
excludes.add("/kotlin/**")
excludes.add("/kotlinx/**")
excludes.add("/okhttp3/**")
excludes.add("/*.txt")
excludes.add("/*.bin")
}
jniLibs {
keepDebugSymbols.add("**/*.so")
}
2020-07-04 13:53:31 +00:00
}
kotlinOptions {
2021-07-24 10:51:00 +00:00
jvmTarget = "11"
2020-07-04 13:53:31 +00:00
}
}
val syncLibs by tasks.registering(Sync::class) {
into("src/main/jniLibs")
into("armeabi-v7a") {
from(rootProject.file("native/out/armeabi-v7a")) {
include("busybox", "magiskboot", "magiskinit", "magisk")
rename { if (it == "magisk") "libmagisk32.so" else "lib$it.so" }
}
}
into("x86") {
from(rootProject.file("native/out/x86")) {
include("busybox", "magiskboot", "magiskinit", "magisk")
rename { if (it == "magisk") "libmagisk32.so" else "lib$it.so" }
}
}
2021-05-12 05:40:53 +00:00
into("arm64-v8a") {
from(rootProject.file("native/out/arm64-v8a")) {
include("busybox", "magiskboot", "magiskinit", "magisk")
rename { if (it == "magisk") "libmagisk64.so" else "lib$it.so" }
}
}
into("x86_64") {
from(rootProject.file("native/out/x86_64")) {
include("busybox", "magiskboot", "magiskinit", "magisk")
rename { if (it == "magisk") "libmagisk64.so" else "lib$it.so" }
}
}
2021-01-24 00:50:55 +00:00
onlyIf {
2021-05-12 05:40:53 +00:00
if (inputs.sourceFiles.files.size != 16)
2021-01-24 00:50:55 +00:00
throw StopExecutionException("Please build binaries first! (./build.py binary)")
true
}
}
val syncAssets by tasks.registering(Sync::class) {
2021-05-12 05:40:53 +00:00
dependsOn(syncLibs)
inputs.property("version", Config.version)
inputs.property("versionCode", Config.versionCode)
into("src/main/assets")
from(rootProject.file("scripts")) {
2021-01-24 15:18:14 +00:00
include("util_functions.sh", "boot_patch.sh", "uninstaller.sh", "addon.d.sh")
}
into("chromeos") {
from(rootProject.file("tools/futility"))
from(rootProject.file("tools/keys")) {
include("kernel_data_key.vbprivk", "kernel.keyblock")
}
}
filesMatching("**/util_functions.sh") {
filter {
2021-05-13 07:21:04 +00:00
it.replace("#MAGISK_VERSION_STUB",
"MAGISK_VER='${Config.version}'\n" +
2021-05-13 07:21:04 +00:00
"MAGISK_VER_CODE=${Config.versionCode}"
2021-05-12 05:40:53 +00:00
)
}
filter<FixCrLfFilter>("eol" to FixCrLfFilter.CrLf.newInstance("lf"))
}
}
val syncResources by tasks.registering(Sync::class) {
dependsOn(syncAssets)
into("src/main/resources/META-INF/com/google/android")
from(rootProject.file("scripts/update_binary.sh")) {
rename { "update-binary" }
}
from(rootProject.file("scripts/flash_script.sh")) {
rename { "updater-script" }
}
}
tasks["preBuild"]?.dependsOn(syncResources)
2020-12-27 05:33:30 +00:00
android.applicationVariants.all {
val keysDir = rootProject.file("tools/keys")
val outSrcDir = File(buildDir, "generated/source/keydata/$name")
2021-09-01 08:11:57 +00:00
val outSrc = File(outSrcDir, "com/topjohnwu/magisk/signing/KeyData.java")
2020-12-27 05:33:30 +00:00
fun PrintStream.newField(name: String, file: File) {
println("public static byte[] $name() {")
print("byte[] buf = {")
val bytes = file.readBytes()
print(bytes.joinToString(",") { "(byte)(${it.toInt() and 0xff})" })
println("};")
println("return buf;")
println("}")
}
2020-12-27 05:33:30 +00:00
val genSrcTask = tasks.register("generate${name.capitalize()}KeyData") {
inputs.dir(keysDir)
outputs.file(outSrc)
doLast {
outSrc.parentFile.mkdirs()
PrintStream(outSrc).use {
2021-09-01 08:11:57 +00:00
it.println("package com.topjohnwu.magisk.signing;")
2020-12-27 05:33:30 +00:00
it.println("public final class KeyData {")
it.newField("testCert", File(keysDir, "testkey.x509.pem"))
it.newField("testKey", File(keysDir, "testkey.pk8"))
it.newField("verityCert", File(keysDir, "verity.x509.pem"))
it.newField("verityKey", File(keysDir, "verity.pk8"))
it.println("}")
}
}
}
2021-07-24 10:51:00 +00:00
registerJavaGeneratingTask(genSrcTask, outSrcDir)
2020-12-27 05:33:30 +00:00
}
2020-07-04 13:53:31 +00:00
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
2020-08-15 12:43:28 +00:00
implementation(kotlin("stdlib"))
2021-05-12 01:40:30 +00:00
// Some dependencies request JDK 8 stdlib, specify manually here to prevent version mismatch
implementation(kotlin("stdlib-jdk8"))
2020-07-04 13:53:31 +00:00
implementation(project(":app:shared"))
implementation("com.github.topjohnwu:jtar:1.0.0")
2020-08-11 07:54:19 +00:00
implementation("com.github.topjohnwu:indeterminate-checkbox:1.0.7")
2020-10-06 07:40:57 +00:00
implementation("com.github.topjohnwu:lz4-java:1.7.1")
2020-07-04 13:53:31 +00:00
implementation("com.jakewharton.timber:timber:4.7.1")
2021-07-24 10:51:00 +00:00
val vBC = "1.69"
implementation("org.bouncycastle:bcprov-jdk15on:${vBC}")
implementation("org.bouncycastle:bcpkix-jdk15on:${vBC}")
2020-07-04 13:53:31 +00:00
val vBAdapt = "4.0.0"
val bindingAdapter = "me.tatarka.bindingcollectionadapter2:bindingcollectionadapter"
implementation("${bindingAdapter}:${vBAdapt}")
implementation("${bindingAdapter}-recyclerview:${vBAdapt}")
2021-03-16 10:44:25 +00:00
val vMarkwon = "4.6.2"
2020-07-04 13:53:31 +00:00
implementation("io.noties.markwon:core:${vMarkwon}")
implementation("io.noties.markwon:html:${vMarkwon}")
implementation("io.noties.markwon:image:${vMarkwon}")
implementation("com.caverock:androidsvg:1.4")
val vLibsu = "3.1.2"
2020-07-04 13:53:31 +00:00
implementation("com.github.topjohnwu.libsu:core:${vLibsu}")
implementation("com.github.topjohnwu.libsu:io:${vLibsu}")
val vRetrofit = "2.9.0"
implementation("com.squareup.retrofit2:retrofit:${vRetrofit}")
implementation("com.squareup.retrofit2:converter-moshi:${vRetrofit}")
implementation("com.squareup.retrofit2:converter-scalars:${vRetrofit}")
2021-04-10 03:01:32 +00:00
val vOkHttp = "4.9.1"
implementation("com.squareup.okhttp3:okhttp:${vOkHttp}")
2020-07-04 13:53:31 +00:00
implementation("com.squareup.okhttp3:logging-interceptor:${vOkHttp}")
implementation("com.squareup.okhttp3:okhttp-dnsoverhttps:${vOkHttp}")
val vMoshi = "1.12.0"
2020-07-04 13:53:31 +00:00
implementation("com.squareup.moshi:moshi:${vMoshi}")
kapt("com.squareup.moshi:moshi-kotlin-codegen:${vMoshi}")
2021-05-06 18:37:21 +00:00
val vRoom = "2.3.0"
2020-07-04 13:53:31 +00:00
implementation("androidx.room:room-runtime:${vRoom}")
2020-07-09 11:49:14 +00:00
implementation("androidx.room:room-ktx:${vRoom}")
2020-07-04 13:53:31 +00:00
kapt("androidx.room:room-compiler:${vRoom}")
2020-08-15 12:43:28 +00:00
val vNav: String by rootProject.extra
implementation("androidx.navigation:navigation-fragment-ktx:${vNav}")
implementation("androidx.navigation:navigation-ui-ktx:${vNav}")
2020-07-04 13:53:31 +00:00
2021-02-05 12:41:01 +00:00
implementation("androidx.biometric:biometric:1.1.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.0")
2020-07-04 13:53:31 +00:00
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
2020-12-27 01:05:12 +00:00
implementation("androidx.browser:browser:1.3.0")
2020-07-04 13:53:31 +00:00
implementation("androidx.preference:preference:1.1.1")
2021-07-24 10:51:00 +00:00
implementation("androidx.recyclerview:recyclerview:1.2.1")
implementation("androidx.fragment:fragment-ktx:1.3.6")
2021-02-05 12:41:01 +00:00
implementation("androidx.work:work-runtime-ktx:2.5.0")
2021-05-06 18:37:21 +00:00
implementation("androidx.transition:transition:1.4.1")
2021-07-24 10:51:00 +00:00
implementation("androidx.core:core-ktx:1.6.0")
implementation("com.google.android.material:material:1.4.0")
2020-07-04 13:53:31 +00:00
}