diff --git a/bramble-android/build.gradle b/bramble-android/build.gradle
index 54018e56e7212f481e0f64847588a25687900ade..cd9a367b0e5ff7a6426fba68be2b7adb8b49a65c 100644
--- a/bramble-android/build.gradle
+++ b/bramble-android/build.gradle
@@ -44,9 +44,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 1b1114862462d5b0ca65da43cca270f86fd52c9c..b33569597f2a33852029cdcd810e480779a3d1cb 100644
--- a/bramble-java/build.gradle
+++ b/bramble-java/build.gradle
@@ -33,13 +33,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'
 }