Files
lawnchair/build.gradle

414 lines
14 KiB
Groovy
Raw Normal View History

import com.android.build.gradle.BasePlugin
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id 'com.android.application' version "7.4.0"
id 'com.android.library' version "7.4.0" apply false
id 'org.jetbrains.kotlin.android' version "1.7.20"
id 'org.jetbrains.kotlin.plugin.parcelize' version "1.7.20"
id 'org.jetbrains.kotlin.plugin.serialization' version "1.7.20"
id "com.google.devtools.ksp" version "1.7.20-1.0.8"
id 'com.google.protobuf' version "0.9.1"
id 'com.google.android.gms.oss-licenses-plugin' version "0.10.6"
id 'dev.rikka.tools.refine' version "3.1.1"
}
2021-02-28 02:55:46 +05:30
allprojects {
plugins.withType(BasePlugin).configureEach {
project.android {
compileSdk 33
defaultConfig {
minSdk 26
targetSdk 32
vectorDrawables.useSupportLibrary = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lint {
abortOnError true
checkReleaseBuilds false
}
}
project.dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
}
}
tasks.withType(KotlinCompile).configureEach {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
2021-02-28 02:55:46 +05:30
}
2022-09-18 02:56:06 +08:00
tasks.matching {
it.name.contains("transformClassesWithHiddenApiRefine")
}.configureEach {
notCompatibleWithConfigurationCache("https://github.com/RikkaApps/HiddenApiRefinePlugin/issues/9")
}
2022-05-10 10:38:05 +07:00
ext.getFrameworkJar = { String name ->
def frameworkJar = new File(rootProject.projectDir, 'prebuilts/libs/' + name)
2021-02-28 02:55:46 +05:30
if (!frameworkJar.exists()) {
throw new IllegalArgumentException("Framework jar path doesn't exist")
}
2022-05-10 10:38:05 +07:00
return frameworkJar
}
ext.addFrameworkJar = { String name ->
def frameworkJar = getFrameworkJar(name)
2021-02-28 02:55:46 +05:30
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.bootstrapClasspath = files([frameworkJar] + (options.bootstrapClasspath.files as Iterable<File>))
}
tasks.withType(KotlinCompile) {
2022-05-10 10:38:05 +07:00
it.classpath.from(files([frameworkJar]))
}
}
}
ext.replaceFrameworkJar = { String name ->
def frameworkJar = getFrameworkJar(name)
gradle.projectsEvaluated {
tasks.withType(KotlinCompile) {
2022-05-08 21:31:31 +07:00
def originalFiles = [] + it.classpath.files
def newFiles = []
originalFiles.each { file ->
if (file.path.endsWith('android.jar')) {
newFiles.add(frameworkJar)
} else {
newFiles.add(file)
}
}
2022-05-10 10:38:05 +07:00
it.classpath.setFrom(files([]))
it.classpath.from(files(newFiles))
2022-01-12 22:12:55 +07:00
}
2021-02-28 02:55:46 +05:30
}
}
}
// todo remove ext block after migrating to version catalog
ext {
accompanist_version = '0.28.0'
libsu_version = '5.0.4'
protocVersion = '3.21.12'
room_version = '2.5.0'
optoVersion = "1.0.18"
}
final def buildCommit = providers.exec {
commandLine('git', 'rev-parse', '--short=7', 'HEAD')
}.standardOutput.asText.get().trim()
2022-11-28 00:52:22 +08:00
final def ciBuild = System.getenv("CI") == "true"
final def ciRef = System.getenv("GITHUB_REF") ?: ""
final def ciRunNumber = System.getenv("GITHUB_RUN_NUMBER") ?: ""
final def isReleaseBuild = ciBuild && ciRef.contains("alpha")
final def devReleaseName = ciBuild ? "Dev (#${ciRunNumber})" : "Dev (${buildCommit})"
2021-10-20 19:59:31 +07:00
2022-11-28 00:52:22 +08:00
final def version = "12.1.0"
final def releaseName = "Alpha 4"
final def versionDisplayName = "${version} ${isReleaseBuild ? releaseName : devReleaseName}"
final def majorVersion = versionDisplayName.split("\\.")[0]
2021-10-20 19:59:31 +07:00
2022-11-28 00:52:22 +08:00
final def quickstepMinSdk = "32"
final def quickstepMaxSdk = "32"
2022-05-08 23:20:37 +07:00
android {
namespace "com.android.launcher3"
defaultConfig {
2022-08-08 13:50:31 +04:30
versionCode 12_01_00_05
2021-10-20 19:59:31 +07:00
versionName "${versionDisplayName}"
2021-08-26 23:00:13 +07:00
buildConfigField "String", "VERSION_DISPLAY_NAME", "\"${versionDisplayName}\""
buildConfigField "String", "MAJOR_VERSION", "\"${majorVersion}\""
2021-10-26 15:34:48 +07:00
buildConfigField "String", "COMMIT_HASH", "\"${buildCommit}\""
buildConfigField "boolean", "ENABLE_AUTO_INSTALLS_LAYOUT", "false"
2022-05-08 23:20:37 +07:00
manifestPlaceholders.quickstepMinSdk = quickstepMinSdk
manifestPlaceholders.quickstepMaxSdk = quickstepMaxSdk
buildConfigField "int", "QUICKSTEP_MIN_SDK", quickstepMinSdk
buildConfigField "int", "QUICKSTEP_MAX_SDK", quickstepMaxSdk
}
2021-03-03 14:25:21 +01:00
2021-03-17 10:29:38 +01:00
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "Lawnchair ${variant.versionName}.apk"
}
2022-08-10 17:37:14 +08:00
}
2021-03-03 14:25:21 +01:00
buildFeatures {
aidl true
buildConfig true
2021-03-03 14:25:21 +01:00
compose true
resValues true
2021-03-03 14:25:21 +01:00
}
composeOptions {
kotlinCompilerExtensionVersion = "1.3.2"
2021-03-03 14:25:21 +01:00
}
2022-08-10 17:37:14 +08:00
final def keystorePropertiesFile = rootProject.file("keystore.properties")
def releaseSigning = signingConfigs.debug
if (keystorePropertiesFile.exists()) {
final def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
2022-08-10 17:37:14 +08:00
releaseSigning = signingConfigs.create("release") {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile rootProject.file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
packagingOptions.resources.excludes += [
"**/*.proto",
"**/*.bin",
"**/*.java",
"**/*.properties",
"**/*.version",
"**/*.*_module",
"com/**",
"google/**",
"kotlin/**",
"kotlinx/**",
"okhttp3/**",
"META-INF/services/**",
"META-INF/com/**",
"META-INF/licenses/**",
"META-INF/AL2.0",
"META-INF/LGPL2.1",
]
buildTypes {
debug {
2022-08-10 17:37:14 +08:00
signingConfig releaseSigning
}
release {
2022-08-10 17:37:14 +08:00
signingConfig releaseSigning
minifyEnabled true
shrinkResources true
2022-06-22 19:54:39 +07:00
proguardFiles "proguard-android-optimize.txt", "proguard.pro"
}
}
2022-08-10 17:37:14 +08:00
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
// The flavor dimensions for build variants (e.g. aospWithQuickstep, aospWithoutQuickstep)
// See: https://developer.android.com/studio/build/build-variants#flavor-dimensions
flavorDimensions "app", "recents"
productFlavors {
aosp {
dimension "app"
applicationId 'com.android.launcher3'
testApplicationId 'com.android.launcher3.tests'
}
l3go {
dimension "app"
applicationId 'com.android.launcher3'
testApplicationId 'com.android.launcher3.tests'
}
lawn {
dimension "app"
applicationId 'app.lawnchair'
testApplicationId 'com.android.launcher3.tests'
isDefault true
}
withQuickstep {
dimension "recents"
2022-08-10 17:37:14 +08:00
minSdk 26
isDefault true
}
withoutQuickstep {
dimension "recents"
}
all {
resValue("string", "launcher_component", "${applicationId}/app.lawnchair.LawnchairLauncher")
}
}
sourceSets {
main {
res.srcDirs = ['res']
java.srcDirs = ['src', 'src_plugins']
manifest.srcFile 'AndroidManifest-common.xml'
proto {
2021-10-08 12:14:19 +07:00
srcDirs = ['protos/', 'quickstep/protos_overrides/']
}
}
androidTest {
res.srcDirs = ['tests/res']
java.srcDirs = ['tests/src', 'tests/tapl']
manifest.srcFile "tests/AndroidManifest-common.xml"
}
androidTestDebug {
manifest.srcFile "tests/AndroidManifest.xml"
}
aosp {
java.srcDirs = ['src_flags', 'src_shortcuts_overrides']
}
aospWithoutQuickstep {
manifest.srcFile "AndroidManifest.xml"
}
aospWithQuickstep {
manifest.srcFile "quickstep/AndroidManifest-launcher.xml"
}
l3go {
res.srcDirs = ['go/res']
java.srcDirs = ['go/src']
manifest.srcFile "go/AndroidManifest.xml"
}
l3goWithoutQuickstepDebug {
manifest.srcFile "AndroidManifest.xml"
}
l3goWithQuickstepDebug {
manifest.srcFile "quickstep/AndroidManifest-launcher.xml"
}
lawn {
java.srcDirs = ['src_flags', 'src_shortcuts_overrides', 'lawnchair/src']
2021-03-19 03:38:39 +05:30
aidl.srcDirs = ['lawnchair/aidl']
res.srcDirs = ['lawnchair/res']
manifest.srcFile "lawnchair/AndroidManifest.xml"
2021-09-09 21:35:09 +07:00
assets {
srcDirs 'lawnchair/assets'
}
2022-05-18 18:31:18 +07:00
proto {
srcDirs = ['lawnchair/protos/']
}
}
lawnWithoutQuickstep {
manifest.srcFile "AndroidManifest.xml"
}
lawnWithQuickstep {
manifest.srcFile "quickstep/AndroidManifest-launcher.xml"
}
withoutQuickstep {
java.srcDirs = ['src_ui_overrides']
}
withQuickstep {
res.srcDirs = ['quickstep/res', 'quickstep/recents_ui_overrides/res']
java.srcDirs = ['quickstep/src', 'quickstep/recents_ui_overrides/src']
manifest.srcFile "quickstep/AndroidManifest.xml"
}
}
2021-02-28 02:55:46 +05:30
2022-05-08 17:32:46 +07:00
addFrameworkJar('framework-12l.jar')
}
dependencies {
final def FRAMEWORK_PREBUILTS_DIR = "prebuilts/libs"
2022-08-10 17:37:14 +08:00
2022-08-15 18:36:32 +08:00
implementation "androidx.dynamicanimation:dynamicanimation:1.0.0"
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation "androidx.preference:preference-ktx:1.2.0"
implementation projects.iconloaderlib
implementation projects.searchuilib
implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-statsd.jar')
// Recents lib dependency
withQuickstepImplementation projects.systemUIShared
withQuickstepCompileOnly projects.hiddenApi
implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'WindowManager-Shell.jar')
// Required for AOSP to compile. This is already included in the sysui_shared.jar
withoutQuickstepImplementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'plugin_core.jar')
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1'
2021-02-28 02:55:46 +05:30
implementation 'com.github.ChickenHook:RestrictionBypass:2.2'
implementation 'dev.rikka.tools.refine:runtime:3.1.1'
2021-03-03 14:25:21 +01:00
implementation platform("androidx.compose:compose-bom:2023.01.00")
implementation "androidx.compose.ui:ui"
debugImplementation "androidx.compose.ui:ui-tooling"
implementation "androidx.compose.ui:ui-text-google-fonts"
implementation "androidx.compose.foundation:foundation"
implementation "androidx.compose.material:material-icons-extended"
implementation "androidx.compose.material:material"
implementation "androidx.compose.runtime:runtime-livedata"
implementation 'androidx.compose.material3:material3:1.1.0-alpha03'
2022-05-28 18:52:15 +02:00
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
implementation "androidx.activity:activity-compose:1.6.1"
2022-08-15 18:36:32 +08:00
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1"
implementation "androidx.navigation:navigation-compose:2.5.3"
2022-08-15 18:36:32 +08:00
implementation "androidx.palette:palette-ktx:1.0.0"
2021-10-07 09:42:24 +07:00
implementation "androidx.slice:slice-core:1.1.0-alpha02"
2021-10-12 15:25:47 +07:00
implementation "com.google.accompanist:accompanist-drawablepainter:$accompanist_version"
2021-08-05 20:41:40 +07:00
implementation "com.google.accompanist:accompanist-insets-ui:$accompanist_version"
2021-08-05 01:51:32 +07:00
implementation "com.google.accompanist:accompanist-navigation-animation:$accompanist_version"
implementation "com.google.accompanist:accompanist-permissions:$accompanist_version"
2021-10-27 16:53:03 +07:00
implementation "com.google.accompanist:accompanist-pager:$accompanist_version"
implementation "com.google.accompanist:accompanist-placeholder-material:$accompanist_version"
implementation "com.google.accompanist:accompanist-systemuicontroller:$accompanist_version"
implementation "com.google.android.material:material:1.7.0"
implementation "io.github.fornewid:material-motion-compose-core:0.10.3"
2022-05-16 15:40:23 +07:00
implementation 'dev.kdrag0n:colorkt:1.0.5'
implementation 'io.coil-kt:coil-compose:2.2.2'
2022-05-16 15:40:23 +07:00
implementation 'me.xdrop:fuzzywuzzy:1.4.0'
implementation "com.patrykmichalik.opto:domain:$optoVersion"
implementation "com.patrykmichalik.opto:core:$optoVersion"
implementation "com.patrykmichalik.opto:compose:$optoVersion"
implementation "androidx.datastore:datastore-preferences:1.0.0"
2022-05-13 15:44:03 +07:00
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
2021-06-15 20:26:41 +07:00
2022-01-12 22:12:55 +07:00
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
2022-07-18 16:01:37 +02:00
ksp "androidx.room:room-compiler:$room_version"
2022-01-12 22:12:55 +07:00
2021-06-15 20:26:41 +07:00
implementation "com.github.topjohnwu.libsu:core:$libsu_version"
implementation "com.github.topjohnwu.libsu:service:$libsu_version"
2021-10-07 09:42:24 +07:00
implementation "com.google.protobuf:protobuf-javalite:$protocVersion"
2022-01-26 13:15:50 +01:00
implementation 'com.github.LawnchairLauncher:oss-notices:1.0.2'
// Persian Date
implementation 'com.github.samanzamani:PersianDate:1.5.4'
2022-08-15 18:36:32 +08:00
implementation 'com.airbnb.android:lottie:5.2.0'
}
ksp {
arg("room.schemaLocation", "$projectDir/schemas")
arg("room.incremental", "true")
}
protobuf {
// Configure the protoc executable
protoc {
artifact = "com.google.protobuf:protoc:${protocVersion}"
}
generateProtoTasks {
all().each { task ->
task.builtins {
remove java
java {
option "lite"
}
}
}
}
}