plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { namespace = "au.audasmedia.webrestrict.kids" compileSdk = 35 defaultConfig { applicationId = "au.audasmedia.webrestrict.kids" minSdk = 26 targetSdk = 35 versionCode = 1 versionName = "0.1.0-phase5.1" // The emulator default: a device config with the Settings app blocked. // A real device receives the retained config over MQTT and overwrites // this, but a broker-less device must still block (FR-14). buildConfigField("String", "DEFAULT_DEVICE_TOPIC", "\"restrict/harry_phone_1/config\"") buildConfigField("String", "DEFAULT_DEVICE_NAME", "\"Harry's phone\"") buildConfigField("String", "DEFAULT_BROKER_HOST", "\"192.168.20.13\"") buildConfigField("int", "DEFAULT_BROKER_PORT", "8883") } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", ) } debug { // The headless emulator proof installs the debug build. Keep the // application id identical to release so the adb commands that // enable the Accessibility Service stay simple. versionNameSuffix = "-debug" } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { buildConfig = true viewBinding = false } packaging { resources.excludes += setOf("META-INF/*.kotlin_module") } } dependencies { implementation("androidx.core:core-ktx:1.13.1") implementation("androidx.appcompat:appcompat:1.7.0") // MQTT over TLS on the 8883 plane (AGENTS.md ยง10 rule 6). The Java client is // pure JVM, so it also runs under the unit tests. implementation("org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5") // JSON is identical on Android and on the JVM, so Config parsing is unit // tested without Robolectric. implementation("com.google.code.gson:gson:2.11.0") testImplementation("junit:junit:4.13.2") }