Tor Onion Proxy For Flutter (Android only)
What is this?
This is a Flutter Plugin for Android, based on code from Tor Onion Proxy Library and Tor Android.
Check out the example app included in this repo for reference on how to use this library with sockets.
Currently used Tor version
This is built using tor 0.4.3.6
Preview
How do I use this plugin?
Preparation (for Android App Bundling)
- Add
android.bundle.enableUncompressedNativeLibs=false
to yourandroid -> gradle.properties
file.
org.gradle.jvmargs=-Xmx1536M
...
android.bundle.enableUncompressedNativeLibs=false
- Add
android:extractNativeLibs="true"
to yourAndroidManifest.xml
.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="...">
...
<application
...
android:extractNativeLibs="true">
...
</application>
...
</manifest>
- Add shrink, zip aligned and minify settings into your
android/app/build.gradle
file.
android {
compileSdkVersion 29
defaultConfig {
...
minSdkVersion 16
targetSdkVersion 29
}
buildTypes {
...
release {
signingConfig signingConfigs.debug
shrinkResources false
zipAlignEnabled false
minifyEnabled false
...
}
}
}
- Use
--no-shrink
param in build appbundle command.
flutter build appbundle --no-shrink ...
1. add dependencies into you project pubspec.yaml file
dependencies:
utopic_tor_onion_proxy: version_number
2. import lib
import 'package:utopic_tor_onion_proxy/utopic_tor_onion_proxy.dart';
3. start Tor Onion Proxy
try {
port = await UtopicTorOnionProxy.startTor();
} on PlatformException catch (e) {
print('Failed to get port. Message: ${e.message}');
}
4. check is Tor OP running
try {
await UtopicTorOnionProxy.isTorRunning();
} on PlatformException catch (e) {
print('Failed to get is tor running. Message: ${e.message}');
}
5. stop Tor Onion Proxy when done
try {
await UtopicTorOnionProxy.stopTor();
} on PlatformException catch (e) {
print('Failed to stop tor. Message: ${e.message}');
}