From 4554092779f7e479e5f8d8dca00a03720ec54dd2 Mon Sep 17 00:00:00 2001 From: mojo Date: Wed, 24 Dec 2025 13:56:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=E5=A4=9A=E4=B8=AA=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=BC=95=E5=85=A5=20productFlavors=20=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BE=9D=E8=B5=96=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 `lib`、`pin` 及 `okhttpMock` 模块中新增 `mode` 变体维度,并配置 `pin`(默认)与 `normal` 两个 flavor。 - 配置 `lib` 模块的 `sourceSets`,将不同 flavor 指向对应的源码目录(`src/pin/java` 与 `src/normal/java`)。 - 迁移 `pin` 和 `app` 模块的 `kotlinOptions` 至 `compilerOptions`,并将 `jvmTarget` 统一设置为 `JVM_1_8`。 - 调整 `pin` 和 `okhttpMock` 模块对 `:lib` 的依赖方式,改为按 flavor 依赖(`pinImplementation` 与 `normalImplementation`)。 - 移动 `NotificationManager.kt` 至 `lib` 模块的 `pin` 源码目录,并在 `normal` 源码目录下新增其空实现。 --- app/build.gradle.kts | 12 ++++--- lib/build.gradle.kts | 26 ++++++++++++++ .../com/example/pin/NotificationManager.kt | 36 +++++++++++++++++++ .../com/example/pin/NotificationManager.kt | 0 okhttpMock/build.gradle.kts | 15 +++++++- pin/build.gradle.kts | 23 ++++++++++-- 6 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 lib/src/normal/java/com/example/pin/NotificationManager.kt rename lib/src/{main => pin}/java/com/example/pin/NotificationManager.kt (100%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1451f20..f1a9e1e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) @@ -28,11 +30,13 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { - jvmTarget = "11" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) // Replace JVM_11 with your desired JVM target (e.g., JVM_1_8, JVM_17) + } } // buildFeatures { // compose = true diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts index d57883f..1a04193 100644 --- a/lib/build.gradle.kts +++ b/lib/build.gradle.kts @@ -39,11 +39,37 @@ android { } } + flavorDimensions += "mode" + productFlavors { + create("pin") { + isDefault = true + dimension = "mode" + } + + create("normal") { + dimension = "mode" + } + } + compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } + sourceSets { + getByName("pin") { + java { + srcDirs("src/pin/java") + } + } + + getByName("normal") { + java { + srcDirs("src/normal/java") + } + } + } + kotlin { compilerOptions { jvmTarget.set(JvmTarget.JVM_1_8) // Replace JVM_11 with your desired JVM target (e.g., JVM_1_8, JVM_17) diff --git a/lib/src/normal/java/com/example/pin/NotificationManager.kt b/lib/src/normal/java/com/example/pin/NotificationManager.kt new file mode 100644 index 0000000..d0cfb31 --- /dev/null +++ b/lib/src/normal/java/com/example/pin/NotificationManager.kt @@ -0,0 +1,36 @@ +package com.example.pin + +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Handler +import android.os.Looper +import android.provider.Settings +import android.provider.Telephony +import android.service.notification.NotificationListenerService +import android.service.notification.StatusBarNotification +import android.text.TextUtils +import android.util.Log +import com.example.logger.LogUtils +import java.lang.reflect.Method +import java.lang.reflect.Modifier + +object NotificationManger { + private val TAG = NotificationManger::class.java.simpleName + private const val DEFAULT_POLL_INTERVAL = 1000L // 默认轮询间隔 1 秒 + var listener:((NotificationMessage)->Unit)? = null + private lateinit var applicationContext: Context + + fun initialized(context: Context) { + applicationContext = context.applicationContext + } + + fun startPolling(intervalMs: Long = DEFAULT_POLL_INTERVAL, duration: Long, l:(NotificationMessage)-> Unit) { + + } + + fun stopPolling() { + + } + +} diff --git a/lib/src/main/java/com/example/pin/NotificationManager.kt b/lib/src/pin/java/com/example/pin/NotificationManager.kt similarity index 100% rename from lib/src/main/java/com/example/pin/NotificationManager.kt rename to lib/src/pin/java/com/example/pin/NotificationManager.kt diff --git a/okhttpMock/build.gradle.kts b/okhttpMock/build.gradle.kts index 2aa067c..c735def 100644 --- a/okhttpMock/build.gradle.kts +++ b/okhttpMock/build.gradle.kts @@ -30,6 +30,18 @@ android { kotlinOptions { jvmTarget = "11" } + + flavorDimensions += "mode" + productFlavors { + create("pin") { + dimension = "mode" + isDefault = true + } + + create("normal") { + dimension = "mode" + } + } } dependencies { @@ -41,5 +53,6 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) api("com.squareup.okhttp3:okhttp:4.12.0") api("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.0") - api(project(":lib")) + "pinImplementation"(project(":lib")) + "normalImplementation"(project(":lib")) } \ No newline at end of file diff --git a/pin/build.gradle.kts b/pin/build.gradle.kts index bc689dc..efd86ac 100644 --- a/pin/build.gradle.kts +++ b/pin/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id("com.android.application") id("org.jetbrains.kotlin.android") @@ -31,8 +33,22 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) // Replace JVM_11 with your desired JVM target (e.g., JVM_1_8, JVM_17) + } + } + + flavorDimensions += "mode" + productFlavors { + create("pin") { + dimension = "mode" + isDefault = true + } + + create("normal") { + dimension = "mode" + } } } @@ -46,5 +62,6 @@ dependencies { testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.2.1") androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") - implementation(project(":lib")) + "pinImplementation"(project(":lib")) + "normalImplementation"(project(":lib")) } \ No newline at end of file