plugins { id 'java' } repositories { mavenCentral() google() } dependencies { // Testing (runs on PC without SDK) testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation 'org.mockito:mockito-core:5.5.0' } java { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } // CRITICAL: Exclude FTC-dependent files from test compilation sourceSets { main { java { exclude 'robot/hardware/FtcMotorController.java' exclude 'robot/hardware/FtcDistanceSensor.java' exclude 'robot/hardware/FtcGyroSensor.java' exclude 'robot/opmodes/**/*.java' } } } test { useJUnitPlatform() testLogging { events "passed", "skipped", "failed" showStandardStreams = false exceptionFormat = 'full' } } // Task to deploy code to FTC SDK task deployToSDK(type: Copy) { group = 'ftc' description = 'Copy code to FTC SDK TeamCode for deployment' def sdkDir = 'C:\\Users\\Eric\\.weevil\\ftc-sdk' from('src/main/java') { include 'robot/**/*.java' } into "$sdkDir/TeamCode/src/main/java" doLast { println '✓ Code deployed to TeamCode' } } // Task to build APK task buildApk(type: Exec) { group = 'ftc' description = 'Build APK using FTC SDK' dependsOn deployToSDK def sdkDir = 'C:\\Users\\Eric\\.weevil\\ftc-sdk' workingDir = file(sdkDir) if (System.getProperty('os.name').toLowerCase().contains('windows')) { commandLine 'cmd', '/c', 'gradlew.bat', 'assembleDebug' } else { commandLine './gradlew', 'assembleDebug' } doLast { println '✓ APK built successfully' } }