plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) id("kotlin-kapt") } android { namespace 'com.narutohuo.xindazhou' compileSdk { version = release(36) } defaultConfig { applicationId "com.dongqingkuaidiandian.chat" minSdk 26 targetSdk 36 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // 注意:所有配置都在各自的模块的 strings.xml 中管理 // app 模块:只管理 app 模块自己的配置 // capability-push 模块:极光推送和厂商通道配置都在 capability-push/src/main/res/values/strings.xml // capability-share 模块:分享配置在 capability-share/src/main/res/values/strings.xml // 所有配置都在各自模块的 AndroidManifest.xml 中使用 @string/ 引用,完全不需要 manifestPlaceholders } // 原来的 buildTypes 配置(已注释,保留作为参考) // buildTypes { // release { // minifyEnabled false // proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // } // } // 签名配置 signingConfigs { release { storeFile file('../jks/dongqingkuaidiandian.jks') // 你的发布用keystore storePassword 'dongqingkuaidiandianq29018' keyAlias 'dongqingkuaidiandianqalias' keyPassword 'dongqingkuaidiandianq29018' v1SigningEnabled true v2SigningEnabled true } } // 新的 buildTypes 配置(带签名) buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release // 使用 release 签名配置 } debug { // Debug 也使用 release 签名,确保分享功能正常(微信需要正确的签名) signingConfig signingConfigs.release } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } buildFeatures { compose true viewBinding true buildConfig true // 启用 BuildConfig 生成 } // ARouter 配置(Kotlin 方式) kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } } // 解决资源合并冲突 packaging { resources { excludes += ['META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version'] excludes += ['META-INF/DEPENDENCIES'] excludes += ['META-INF/LICENSE'] excludes += ['META-INF/LICENSE.txt'] excludes += ['META-INF/license.txt'] excludes += ['META-INF/NOTICE'] excludes += ['META-INF/NOTICE.txt'] excludes += ['META-INF/notice.txt'] excludes += ['META-INF/ASL2.0'] // 排除未对齐的 x86_64 库(解决 16 KB alignment 警告) // 只影响 x86_64 模拟器,不影响 ARM 设备(荣耀300等所有真实手机) excludes += ['assets/libwbsafeedit_x86_64'] excludes += ['assets/libwbsafeedit_x86'] // 也排除 x86 版本(未对齐) } // 启用 16 KB 页大小对齐(解决 16 KB alignment 警告) // 自动对齐原生库(.so 文件),确保兼容 16 KB 页大小的设备 jniLibs { useLegacyPackaging = false } } } // 全局排除旧的 support 库,避免与 AndroidX 冲突 configurations.all { exclude group: 'com.android.support' } dependencies { // 基础模块 // 注意:app 模块不直接依赖 base-core,通过 base-common 间接获得 implementation project(':base-common') // ============================================================================ // ⚠️⚠️⚠️ 严禁直接依赖能力层里面的具体库 ⚠️⚠️⚠️ // ============================================================================ // // ❌ 禁止在 app 模块中直接依赖能力层使用的第三方 SDK,例如: // ❌ implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.24' // 微信 SDK // ❌ implementation 'cn.jiguang.sdk:jpush:5.9.0' // 极光推送 SDK // ❌ implementation 'com.umeng.umsdk:share-core:7.3.2' // 友盟分享 SDK // ❌ implementation files('libs/xxx.jar') // 能力层的 JAR/AAR 文件 // // ✅ 正确做法:只依赖能力模块本身,能力模块会通过 api 传递必要的依赖 // ✅ implementation project(':capability-share') // 只依赖模块 // ✅ implementation project(':capability-push') // 只依赖模块 // // 📋 原因: // 1. 每个能力模块管理自己的依赖,app 模块只负责组装 // 2. 能力模块通过 api 传递必要的依赖,app 模块会自动获得 // 3. 直接依赖会导致版本冲突、重复依赖等问题 // 4. 违反模块化原则,增加维护成本 // // ============================================================================ // SDK模块(能力层)- 只依赖模块本身,不要依赖模块内部的库! implementation project(':capability-ble') implementation project(':capability-socketio') implementation project(':capability-push') implementation project(':capability-qrcode') implementation project(':capability-share') implementation project(':capability-nfc') // 业务模块代码已迁移到 app 模块内,不再需要独立的 module-* 依赖 // AndroidX Core implementation libs.androidx.core.ktx implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.11.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' // ViewModel & LiveData & StateFlow implementation libs.androidx.lifecycle.runtime.ktx implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.7.0' implementation 'androidx.lifecycle:lifecycle-process:2.7.0' // ProcessLifecycleOwner(监听 App 前后台切换) // Navigation implementation 'androidx.navigation:navigation-fragment-ktx:2.7.6' implementation 'androidx.navigation:navigation-ui-ktx:2.7.6' // 注意:基础第三方库(Retrofit、OkHttp、Gson、Glide、Coroutines) // 已通过 base-common 间接获得(base-common → base-core),不需要直接依赖 // Room implementation 'androidx.room:room-runtime:2.6.1' implementation 'androidx.room:room-ktx:2.6.1' annotationProcessor 'androidx.room:room-compiler:2.6.1' // Compose implementation libs.androidx.activity.compose implementation platform(libs.androidx.compose.bom) implementation libs.androidx.compose.ui implementation libs.androidx.compose.ui.graphics implementation libs.androidx.compose.ui.tooling.preview implementation libs.androidx.compose.material3 // LogcatViewer 依赖已移至 base-core 模块,通过 ILog 统一管理 // ARouter 编译器(用于生成路由代码) kapt 'com.alibaba:arouter-compiler:1.5.2' // Google Play Services Location (用于定位功能) implementation 'com.google.android.gms:play-services-location:21.0.1' // Testing testImplementation libs.junit androidTestImplementation libs.androidx.junit androidTestImplementation libs.androidx.espresso.core androidTestImplementation platform(libs.androidx.compose.bom) androidTestImplementation libs.androidx.compose.ui.test.junit4 debugImplementation libs.androidx.compose.ui.tooling debugImplementation libs.androidx.compose.ui.test.manifest }