Twelve: Initial commit

Co-authored-by: Luca Stefani <luca.stefani.ge1@gmail.com>
Co-authored-by: Asher Simonds <dayanhammer@gmail.com>
Change-Id: Iaecc3b21a8b579ec0e4455f7aabdaa8c56d3045c
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 0000000..45c2624
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,103 @@
+/*
+ * SPDX-FileCopyrightText: 2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import org.lineageos.generatebp.GenerateBpPlugin
+import org.lineageos.generatebp.GenerateBpPluginExtension
+import org.lineageos.generatebp.models.Module
+
+plugins {
+    alias(libs.plugins.android.application)
+    alias(libs.plugins.kotlin.android)
+}
+
+apply {
+    plugin<GenerateBpPlugin>()
+}
+
+buildscript {
+    repositories {
+        maven("https://raw.githubusercontent.com/lineage-next/gradle-generatebp/v1.11/.m2")
+    }
+
+    dependencies {
+        classpath("org.lineageos:gradle-generatebp:+")
+    }
+}
+
+android {
+    namespace = "org.lineageos.twelve"
+    compileSdk = 35
+
+    defaultConfig {
+        applicationId = "org.lineageos.twelve"
+        minSdk = 30
+        targetSdk = 35
+        versionCode = 1
+        versionName = "1.0"
+    }
+
+    buildTypes {
+        release {
+            isMinifyEnabled = false
+            proguardFiles(
+                getDefaultProguardFile("proguard-android-optimize.txt"),
+                "proguard-rules.pro"
+            )
+        }
+
+        debug {
+            // Append .dev to package name so we won't conflict with AOSP build.
+            applicationIdSuffix = ".dev"
+        }
+    }
+
+    compileOptions {
+        sourceCompatibility = JavaVersion.VERSION_1_8
+        targetCompatibility = JavaVersion.VERSION_1_8
+    }
+
+    kotlinOptions {
+        jvmTarget = "1.8"
+    }
+}
+
+dependencies {
+    implementation(libs.androidx.activity)
+    implementation(libs.androidx.appcompat)
+    implementation(libs.androidx.constraintlayout)
+    implementation(libs.androidx.core.ktx)
+    implementation(libs.androidx.fragment.ktx)
+    implementation(libs.androidx.lifecycle.service)
+    implementation(libs.androidx.media3.common.ktx)
+    implementation(libs.androidx.media3.exoplayer)
+    implementation(libs.androidx.media3.exoplayer.midi)
+    implementation(libs.androidx.media3.session)
+    implementation(libs.androidx.media3.ui)
+    implementation(libs.androidx.navigation.fragment.ktx)
+    implementation(libs.androidx.navigation.ui.ktx)
+    implementation(libs.androidx.recyclerview)
+    implementation(libs.androidx.viewpager2)
+    implementation(libs.kotlinx.coroutines.guava)
+    implementation(libs.material)
+}
+
+configure<GenerateBpPluginExtension> {
+    targetSdk.set(android.defaultConfig.targetSdk!!)
+    availableInAOSP.set { module: Module ->
+        when {
+            module.group.startsWith("androidx") -> {
+                // We provide our own androidx.media3
+                !module.group.startsWith("androidx.media3")
+            }
+            module.group.startsWith("org.jetbrains") -> true
+            module.group == "com.google.auto.value" -> true
+            module.group == "com.google.code.findbugs" -> true
+            module.group == "com.google.errorprone" -> true
+            module.group == "com.google.guava" -> true
+            module.group == "junit" -> true
+            else -> false
+        }
+    }
+}