plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { namespace = "com.verify.remote" compileSdk = 34 defaultConfig { applicationId = "com.verify.remote" minSdk = 26 targetSdk = 34 versionCode = 4 versionName = "0.1-phase4a" // 阶段 1 只测真机 arm64;x86_64 留给模拟器回归 ndk { abiFilters += listOf("arm64-v8a") } } buildTypes { release { isMinifyEnabled = false } } // 3a/U7:安卓测试基础设施(Q3=A,用户 2026-10-31 批准)。 // **仅测试作用域**:junit 不进 APK,runtime dependencies 保持为空。 testOptions { unitTests { // android.jar 桩方法抛 "not mocked"——本工程的单测刻意只测纯逻辑 // (不构造 Android 对象),此开关只兜常量引用类的类加载副作用。 isReturnDefaultValues = true } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" } // .so 由外部脚本(build-android.ps1)预先拷到 app/libs/arm64-v8a/, // 不让 Gradle 调 cargo——构建职责分离:Rust 侧失败与 Gradle 侧失败可立刻区分。 sourceSets { getByName("main") { jniLibs.srcDirs("libs") } } packaging { jniLibs { // AGP 默认已按 useLegacyPackaging 处理;保持默认压缩+extractNativeLibs=false // 由 AGP 保证 STORED+对齐,手动链的坑(lessons 记录)在 Gradle 下不存在 useLegacyPackaging = false } } } dependencies { // 阶段 1 刻意零第三方 UI 依赖:纯 View 代码布局,减少变量。 // AndroidX 在阶段 2 做正式 UI 时再引入。 // 3a/U7(Q3=A 批准):仅 JUnit 测试作用域,不进 APK。 testImplementation("junit:junit:4.13.2") }