Files
Murine-launcher/build.gradle
T

364 lines
13 KiB
Groovy

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
buildscript {
dependencies {
classpath GRADLE_CLASS_PATH
classpath PROTOBUF_CLASS_PATH
classpath KOTLIN
}
}
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.rikka.refine)
id "com.google.devtools.ksp" version "2.3.3"
}
final String ANDROID_TOP = "${rootDir}"
final String FRAMEWORK_PREBUILTS_DIR = "${ANDROID_TOP}/prebuilts/libs/"
apply plugin: 'com.google.protobuf'
apply plugin: 'org.jetbrains.kotlin.android'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion COMPILE_SDK
namespace = 'com.android.launcher3'
defaultConfig {
minSdkVersion 29
targetSdkVersion 36
versionCode 3
versionName "0.3"
buildConfigField "boolean", "IS_STUDIO_BUILD", "false"
buildConfigField "boolean", "QSB_ON_FIRST_SCREEN", "true"
buildConfigField "boolean", "IS_DEBUG_DEVICE", "false"
buildConfigField "boolean", "WIDGET_ON_FIRST_SCREEN", "true"
buildConfigField "boolean", "WIDGETS_ENABLED", "true"
buildConfigField "boolean", "NOTIFICATION_DOTS_ENABLED", "true"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
def proguardFilesFromAosp = allprojects
.collect { it.file("proguard.flags") }
.findAll { it.exists() }
.toArray()
buildTypes {
debug {
applicationIdSuffix ".debug"
debuggable true
minifyEnabled false
}
release {
debuggable false
minifyEnabled true
shrinkResources true
pseudoLocalesEnabled false
proguardFiles proguardFilesFromAosp + "proguard.pro"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_21
targetCompatibility JavaVersion.VERSION_21
}
// 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 'app.murinelauncher'
testApplicationId 'com.android.launcher3.tests'
}
l3go {
dimension "app"
applicationId 'app.murinelauncher'
testApplicationId 'com.android.launcher3.tests'
}
withQuickstep {
dimension "recents"
minSdkVersion 33
}
withoutQuickstep {
dimension "recents"
}
}
sourceSets {
main {
res.srcDirs = ['res']
java.srcDirs = ['src', 'src_plugins', 'tests/shared', 'system_ext', 'tests/multivalentTests/shared', 'systemui_core/shared']
manifest.srcFile 'AndroidManifest-common.xml'
proto {
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 {
java.srcDirs = ['src_no_quickstep']
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"
}
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', 'quickstep/src_protolog', 'quickstep/dagger']
manifest.srcFile "quickstep/AndroidManifest.xml"
}
}
kotlinOptions {
jvmTarget = '21'
}
buildFeatures {
buildConfig = true
}
}
// 启用增量注解处理(提升编译速度)
kapt {
useBuildCache = true
correctErrorTypes = true
javacOptions {
// option("-Xmaxerrs", 1000)
}
}
allprojects {
ext {
daggerVersion = '2.56.2'
addFrameworkJarInternal = { Project proj, String name ->
def frameworkJar = new File(FRAMEWORK_PREBUILTS_DIR, name)
if (!frameworkJar.exists()) {
throw new IllegalArgumentException("Framework jar path ${frameworkJar.path} doesn't exist")
}
proj.dependencies {
compileOnly proj.files(frameworkJar)
}
proj.gradle.projectsEvaluated {
proj.tasks.withType(JavaCompile).configureEach {
classpath = proj.files(frameworkJar, classpath)
}
proj.tasks.withType(KotlinCompile).configureEach {
libraries.setFrom proj.files(frameworkJar, libraries)
}
}
}
afterEvaluate { proj ->
if (proj.plugins.hasPlugin('com.android.application') || proj.plugins.hasPlugin('com.android.library')) {
def m = proj.name =~ /^compatLibV?(.*)$/
def framework = 'framework-16.jar'
if (m.matches()) {
def suffix = m[0][1] // first match, first capture group
framework = [
"": "framework-15.jar",
Baklava: "framework-16.jar",
Q: "framework-10.jar",
R: "framework-11.jar",
S: "framework-12.jar",
T: "framework-13.jar",
U: "framework-14.jar",
V: "framework-15.jar"
].get(suffix, "unknown")
}
addFrameworkJarInternal(proj, framework)
proj.dependencies {
// Apply all shared prebuilt jars to every module
// Use compileOnly to avoid desugaring/R8 errors with framework stubs
compileOnly proj.fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: ['*.jar'], exclude: ['framework-*.jar'])
// Common androidx/libs available everywhere
implementation libs.androidx.core.ktx
implementation libs.annotation
implementation libs.kotlinx.coroutines
}
}
}
compileOnlyCommonJars = {
dependencies {
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-core-16.jar')
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-statsd-16.jar')
// Always declare as dependencies regardless
compileOnly project(':compatLib')
compileOnly project(':compatLib:compatLibVQ')
compileOnly project(':compatLib:compatLibVR')
compileOnly project(':compatLib:compatLibVS')
compileOnly project(':compatLib:compatLibVT')
compileOnly project(':compatLib:compatLibVU')
compileOnly project(':compatLib:compatLibVV')
compileOnly project(':compatLib:compatLibVBaklava')
}
}
}
}
dependencies {
implementation libs.androidx.appcompat
implementation libs.androidx.core.ktx
implementation libs.androidx.recyclerview
implementation libs.androidx.dynamicanimation
implementation libs.androidx.preference
implementation libs.androidx.slice.builders
implementation libs.androidx.graphics.shapes
implementation libs.androidx.window
implementation libs.androidx.core.animation
implementation libs.androidx.material3
implementation libs.androidx.tracing
implementation libs.material
implementation libs.kotlinx.coroutines
implementation libs.protobuf.javalite
implementation libs.chickenhook.restrictionbypass
implementation libs.rikka.refine.runtime
api libs.lottie
implementation libs.dagger
kapt libs.dagger.compiler
testImplementation libs.junit
androidTestImplementation libs.mockito.core
androidTestImplementation libs.dexmaker
androidTestImplementation libs.dexmaker.mockito
androidTestImplementation libs.runner
androidTestImplementation libs.rules
androidTestImplementation libs.uiautomator.v18
androidTestImplementation libs.annotation
}
dependencies {
implementation project(':IconLoader')
implementation project(':Animation')
implementation project(':Shared')
implementation project(':msdl')
implementation project(':flags')
implementation project(':WMShared')
implementation project(':SettingsLib-SettingsTheme')
implementation project(':SettingsLib-SliderPreference')
implementation project(':SettingsLib-SelectorWithWidgetPreference')
implementation project(':SettingsLib-ExpandablePreference')
implementation project(':SettingsLib-SegmentedButtonPreference')
withQuickstepCompileOnly project(':HiddenApi')
// Include all compat libs
implementation project(':compatLib')
implementation project(':compatLib:compatLibVQ')
implementation project(':compatLib:compatLibVR')
implementation project(':compatLib:compatLibVS')
implementation project(':compatLib:compatLibVT')
implementation project(':compatLib:compatLibVU')
implementation project(':compatLib:compatLibVV')
implementation project(':compatLib:compatLibVBaklava')
}
dependencies {
// Recents lib dependency
withQuickstepImplementation fileTree(dir: "${FRAMEWORK_PREBUILTS_DIR}", include: 'sysui_shared.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')
l3goImplementation files('prebuilts/libs/libandroid_browser_helper.jar')
// withQuickstepImplementation files('prebuilts/libs/SettingsLibCollapsingToolbarBaseActivity.jar')
withQuickstepImplementation files('prebuilts/libs/SystemUISharedLib.jar')
withQuickstepImplementation files('prebuilts/libs/SystemUISharedLib_kotlin.jar')
withQuickstepImplementation files('prebuilts/libs/SystemUI-shared-utils_kotlin.jar')
withQuickstepImplementation files('prebuilts/libs/SystemUIUnfoldLib.jar')
withQuickstepImplementation files('prebuilts/libs/SystemUIUnfoldLib_kotlin.jar')
implementation files('prebuilts/libs/SystemUI-statsd.jar')
withQuickstepImplementation files('prebuilts/libs/contextualeducationlib.jar')
withQuickstepImplementation files('prebuilts/libs/WindowManager-Shell-shared.jar')
withQuickstepImplementation files('prebuilts/libs/WindowManager-Shell-shared_kotlin.jar')
implementation files('prebuilts/libs/am_flags_lib.jar')
implementation files('prebuilts/libs/PlatformAnimationLib.jar')
implementation files('prebuilts/libs/PlatformAnimationLib_kotlin.jar')
implementation files('prebuilts/libs/PluginAnnotationLib.jar')
implementation files('prebuilts/libs/PluginAnnotationLib_kotlin.jar')
implementation files('prebuilts/libs/PluginCoreLib.jar')
implementation files('prebuilts/libs/PluginCoreLib_kotlin.jar')
implementation files('prebuilts/libs/view_capture_proto.jar')
// implementation files('prebuilts/libs/tracinglib-platform.jar')
implementation files('prebuilts/libs/tracinglib-platform.jar')
implementation files('prebuilts/libs/view_capture.jar')
implementation files('prebuilts/libs/view_capture_kotlin.jar')
//releaseImplementation files('prebuilts/libs/aconfig-annotations-lib.jar')
compileOnly files('prebuilts/libs/framework-16.jar')
}
def protocVersion = '4.33.1'//'3.8.0'
protobuf {
// Configure the protoc executable
protoc {
if (osdetector.os == "osx") {
artifact = "com.google.protobuf:protoc:${protocVersion}:osx-x86_64"
} else {
// artifact = "com.google.protobuf:protoc:${protocVersion}${PROTO_ARCH_SUFFIX}"
artifact = "com.google.protobuf:protoc:${protocVersion}"
}
}
generateProtoTasks {
all().each { task ->
task.builtins {
remove java
java {
option "lite"
}
}
}
}
}