Meshnet is an Android app that lets you connect to cjdns networks, without the need for a rooted phone -- thanks to the android.net.VpnService API introduced with Android 4.0 (Ice Cream Sandwich). Older versions still require root.
Current state:
- app starts cjdroute and stops it properly
- app crashes on real devices because of a threading issue
- shows cjdroute's pid on the emulator
- shows cjdroute's output in adb logcat -- with weird buffer issues though
- doesn't support ETHInterface and TUNInterface yet
- Hello world
- Build cjdroute
- Start cjdroute from app
- Properly kill cjdroute (via Admin API)
- Extract Admin API config from cjdroute.conf
- Run as background service
- Display cjdroute logs
- Pass VpnService descriptor to cjdroute
- Display peer stats
- Allow peering info exchange via qr codes
- Release on fdroid (finn's repo: http://h.finn.io/fdroid/)
- Store cjdroute.conf on SD card
- Store cjdroute.conf somewhere safe
- Add IPv6 to contacts
- Use root for Android < 4.0
- tbc
- Android SDK and NDK
- x86 or armeabi toolchain
android-ndk/build/tools/make-standalone-toolchain.sh --platform=android-21 --toolchain=x86-4.9 --install-dir=i686-linux-android/ --system=linux-x86_64
android-ndk/build/tools/make-standalone-toolchain.sh --platform=android-21 --toolchain=arm-linux-androideabi-4.9 --install-dir=arm-linux-androideabi/ --system=linux-x86_64
- build cjdns
git clone https://github.com/lgierth/cjdns.git && cd cjdns && git checkout android-wip
- for the x86 emulator:
PATH=$PATH:/path/to/i686-linux-android/bin CROSS_COMPILE=i686-linux-android- TARGET_ARCH=x64 Seccomp_NO=1 ./cross-do
cp cjdroute /path/to/cjdns-android/src/main/assets/x86/
- for armeabi devices:
PATH=$PATH:/path/to/arm-linux-androideabi/bin CROSS_COMPILE=arm-linux-androideabi- TARGET_ARCH=arm Seccomp_NO=1 ./cross-do
cp cjdroute /path/to/cjdns-android/src/main/assets/armeabi-v7a/
- for android-5.0 on x86 (and possibly other archs), you need to cross-do with
Seccomp_NO=1
cjdroute --genconf > /path/to/cjdns-android/src/main/assets/cjdroute.conf
- Create emulator
android create avd -n cjdns -t 1 --abi x86 --force
- Start emulator
emulator -avd cjdns -qemu -m 256 -enable-kvm
- build cjdns-android (and clear app cache)
./gradlew installDebug
- tail app log
adb logcat | grep cjdns
- tail cjdroute crashdumps (x86)
adb logcat | ndk-trace -sym src/main/assets/x86/
- tail cjdroute crashdumps (armeabi)
adb logcat | ndk-trace -sym src/main/assets/armeabi-v7a/
- Issue tracker: github.com/BerlinMeshnet/cjdns-android/issues
- IRC: #android on HypeIRC
- Development updates: www.lars.meshnet.berlin
- Re: Text Relocations warning
- Re: SecComp
- Setup