diff --git a/bramble-android/build.gradle b/bramble-android/build.gradle
index e69df25dff129976047f17521a5410203a52b3e7..55f2389f025642c81e2e804663144288bfdc4c44 100644
--- a/bramble-android/build.gradle
+++ b/bramble-android/build.gradle
@@ -43,9 +43,26 @@ dependencies {
 	testImplementation "org.hamcrest:hamcrest-core:1.3"
 }
 
-project.afterEvaluate {
-	copy {
-		from configurations.tor.collect { zipTree(it) }
-		into 'src/main/res/raw'
+def torBinariesDir = 'src/main/res/raw'
+
+task unpackTorBinaries {
+	outputs.dir torBinariesDir
+	doLast {
+		copy {
+			from configurations.tor.collect { zipTree(it) }
+			into torBinariesDir
+		}
 	}
 }
+
+tasks.withType(JavaCompile) {
+	dependsOn unpackTorBinaries
+}
+
+task cleanTorBinaries {
+	doLast {
+		delete fileTree(torBinariesDir) { include '*.zip' }
+	}
+}
+
+clean.dependsOn cleanTorBinaries
diff --git a/bramble-java/build.gradle b/bramble-java/build.gradle
index 41e81ea24b5646df041408ae5e402aecfb9197c3..66ec4d6c1d29d2ba1f4bd8f799f55a5af771d7d4 100644
--- a/bramble-java/build.gradle
+++ b/bramble-java/build.gradle
@@ -32,13 +32,30 @@ dependencies {
 	testApt 'com.google.dagger:dagger-compiler:2.0.2'
 }
 
-project.afterEvaluate {
-	copy {
-		from configurations.tor.collect { zipTree(it) }
-		into 'src/main/resources'
+def torBinariesDir = 'src/main/resources'
+
+task unpackTorBinaries {
+	outputs.dir torBinariesDir
+	doLast {
+		copy {
+			from configurations.tor.collect { zipTree(it) }
+			into torBinariesDir
+		}
 	}
 }
 
+tasks.withType(JavaCompile) {
+	dependsOn unpackTorBinaries
+}
+
+task cleanTorBinaries {
+	doLast {
+		delete fileTree(torBinariesDir) { include '*.zip' }
+	}
+}
+
+clean.dependsOn cleanTorBinaries
+
 tasks.withType(Test) {
 	systemProperty 'java.library.path', 'libs'
 }