Psiphon Library for Android enables you to easily embed Psiphon in your Android app.
Review Go Android documentation:
/AndroidLibrary
README.md - this file
gojni.so - build binary output
/psi
psi.go - main library source
/go_psi
go_psi.go - gobind output
/java_psi/go/psi
Psi.java - gobind output
/java_golang/go
Go.java - fork of Go/Java integration file
Seq.java - fork of Go/Java integration file
/libpsi
main.go - stub main package for library
Requires Go 1.4 or later
$GOPATH/bin/gobind -lang=go github.com/Psiphon-Labs/psiphon-tunnel-core/AndroidLibrary/psi > go_psi/go_psi.go
$GOPATH/bin/gobind -lang=java github.com/Psiphon-Labs/psiphon-tunnel-core/AndroidLibrary/psi > java_psi/go/psi/Psi.java
In /libpsi CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 go build -ldflags="-shared" and copy output file to gojni.so
java_golang/go/*.java to your $src/gojava_psi/go/psi/Psi.java to your $src/go/psiNOTE: may change to Psiphon-specific library name and init.
See sample usage in Psiphon.java. Uses gobind conventions for data passing.
Go.init(getApplicationContext()); in Application.onCreate()Psi.Listener.Stub to receive messages in Message(String line)Psi.Start(configFile, Psi.Listener) to start Psiphon. Catch Exception to receive errors.Psi.Stop() to stop Psiphon.NOTE: may add more explicit interface for state change events.