diff --git a/dummy.go b/dummy.go
index e62d793..53e27bb 100644
--- a/dummy.go
+++ b/dummy.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !android
+// +build !java,!android
 
 package main
 
diff --git a/impl/google/channel/jni.go b/impl/google/channel/jni.go
index a29a5c5..324f3f4 100644
--- a/impl/google/channel/jni.go
+++ b/impl/google/channel/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package channel
 
diff --git a/impl/google/channel/util.go b/impl/google/channel/util.go
index cc0b35d..a58cdb3 100644
--- a/impl/google/channel/util.go
+++ b/impl/google/channel/util.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package channel
 
diff --git a/impl/google/jni.go b/impl/google/jni.go
index 586fab9..da21aa5 100644
--- a/impl/google/jni.go
+++ b/impl/google/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package google
 
diff --git a/impl/google/namespace/jni.go b/impl/google/namespace/jni.go
index 2ee6c9f..aa39aeb 100644
--- a/impl/google/namespace/jni.go
+++ b/impl/google/namespace/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package namespace
 
diff --git a/impl/google/namespace/util.go b/impl/google/namespace/util.go
index 2abd02e..535cccb 100644
--- a/impl/google/namespace/util.go
+++ b/impl/google/namespace/util.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package namespace
 
diff --git a/impl/google/rpc/dispatcher.go b/impl/google/rpc/dispatcher.go
index ad9954b..913fdf8 100644
--- a/impl/google/rpc/dispatcher.go
+++ b/impl/google/rpc/dispatcher.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package rpc
 
diff --git a/impl/google/rpc/invoker.go b/impl/google/rpc/invoker.go
index 67e0d13..c9d4325 100644
--- a/impl/google/rpc/invoker.go
+++ b/impl/google/rpc/invoker.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package rpc
 
diff --git a/impl/google/rpc/jni.go b/impl/google/rpc/jni.go
index 7456437..a506f7e 100644
--- a/impl/google/rpc/jni.go
+++ b/impl/google/rpc/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package rpc
 
diff --git a/impl/google/rpc/util.go b/impl/google/rpc/util.go
index ba0e4aa..000a6b4 100644
--- a/impl/google/rpc/util.go
+++ b/impl/google/rpc/util.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package rpc
 
diff --git a/impl/google/rt/jni.go b/impl/google/rt/jni.go
index 1f514b2..b184e9b 100644
--- a/impl/google/rt/jni.go
+++ b/impl/google/rt/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package rt
 
diff --git a/jni.go b/jni.go
index a082d47..a128bec 100644
--- a/jni.go
+++ b/jni.go
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package main
 
 import (
-	"flag"
+	"os"
 
-	"golang.org/x/mobile/app"
+	"v.io/x/lib/vlog"
 
 	jgoogle "v.io/x/jni/impl/google"
 	jutil "v.io/x/jni/util"
@@ -21,6 +21,17 @@
 
 //export Java_io_v_v23_V_nativeInit
 func Java_io_v_v23_V_nativeInit(env *C.JNIEnv, jVRuntimeClass C.jclass) {
+	// Ignore all args except for the first one.
+	// NOTE(spetrovic): in the future, we could accept all arguments that are
+	// actually defined in Go.  We'd have to manually check.
+	if len(os.Args) > 1 {
+		os.Args = os.Args[:1]
+	}
+	// Send all logging to stderr, so that the output is visible in android.
+	// Note that if this flag is removed, the process will likely crash on
+	// android as android requires that all logs are written into the app's
+	// local directory.
+	vlog.Log.Configure(vlog.LogToStderr(true))
 	if err := jutil.Init(env); err != nil {
 		jutil.JThrowV(env, err)
 		return
@@ -36,9 +47,4 @@
 }
 
 func main() {
-	// Send all logging to stderr, so that the output is visible in Android.  Note that if this
-	// flag is removed, the process will likely crash as android requires that all logs are written
-	// into a specific directory.
-	flag.Set("logtostderr", "true")
-	app.Run(app.Callbacks{})
 }
diff --git a/util/call.go b/util/call.go
index cddd6ef..c9c73f2 100644
--- a/util/call.go
+++ b/util/call.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package util
 
diff --git a/util/coding.go b/util/coding.go
index ac70f0a..81b6bcc 100644
--- a/util/coding.go
+++ b/util/coding.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package util
 
diff --git a/util/jni_wrapper.c b/util/jni_wrapper.c
index a81f5e1..f7a72db 100644
--- a/util/jni_wrapper.c
+++ b/util/jni_wrapper.c
@@ -1,4 +1,4 @@
-// +build android
+// +build java android
 
 #include "jni_wrapper.h"
 
@@ -159,7 +159,7 @@
 }
 
 jint AttachCurrentThread(JavaVM* jvm, JNIEnv** env, void* args) {
-  return (*jvm)->AttachCurrentThread(jvm, env, args);
+  return (*jvm)->AttachCurrentThread(jvm, (void**) env, args);
 }
 
 jint DetachCurrentThread(JavaVM* jvm) {
diff --git a/util/jni_wrapper.h b/util/jni_wrapper.h
index fe355f6..449cf52 100644
--- a/util/jni_wrapper.h
+++ b/util/jni_wrapper.h
@@ -1,4 +1,4 @@
-// +build android
+// +build java android
 
 // Stubs for invoking JNI (Java Native Interface) methods, which all use
 // function pointers.  These stubs are meant for languages such as GO
diff --git a/util/ref.go b/util/ref.go
index ae13507..65a4f0e 100644
--- a/util/ref.go
+++ b/util/ref.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package util
 
diff --git a/util/util.go b/util/util.go
index d6c8a3a..ff137f6 100644
--- a/util/util.go
+++ b/util/util.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 // Package util provides various JNI utilities shared across our JNI code.
 package util
@@ -758,7 +758,7 @@
 	if err := JExceptionMsg(env); err != nil || class == nil {
 		return nil, fmt.Errorf("couldn't find class %s: %v", name, err)
 	}
-	return unsafe.Pointer(C.NewGlobalRef(env, C.jobject(class))), nil
+	return NewGlobalRef(env, C.jobject(class)), nil
 }
 
 // GoTime converts the provided Java DateTime object into a Go time.Time value.
diff --git a/v23/android/jni.go b/v23/android/jni.go
deleted file mode 100644
index 38d9a1f..0000000
--- a/v23/android/jni.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2015 The Vanadium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build android
-
-package android
-
-import "syscall"
-
-// #include "jni.h"
-// #include <stdlib.h>
-import "C"
-
-// Init initializes the JNI code with the given Java environment.  This method
-// must be invoked before any other method in this package and must be called
-// from the main Java thread (e.g., On_Load()).
-// NOTE: Because CGO creates package-local types and because this method may be
-// invoked from a different package, Java environment is passed in an empty
-// interface and then cast into the package-local environment type.
-func Init(jEnv interface{}) error {
-	return nil
-}
-
-//export Java_io_v_v23_android_RedirectStderr_nativeStart
-func Java_io_v_v23_android_RedirectStderr_nativeStart(env *C.JNIEnv, jRuntime C.jclass, fileno C.jint) {
-	syscall.Dup2(int(fileno), syscall.Stderr)
-}
diff --git a/v23/context/jni.go b/v23/context/jni.go
index 244686b..3a201d2 100644
--- a/v23/context/jni.go
+++ b/v23/context/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package context
 
diff --git a/v23/context/util.go b/v23/context/util.go
index 35bd0b0..5098c81 100644
--- a/v23/context/util.go
+++ b/v23/context/util.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package context
 
diff --git a/v23/i18n/jni.go b/v23/i18n/jni.go
index 0a8279e..24af341 100644
--- a/v23/i18n/jni.go
+++ b/v23/i18n/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package i18n
 
diff --git a/v23/jni.go b/v23/jni.go
index cdc3959..d55f056 100644
--- a/v23/jni.go
+++ b/v23/jni.go
@@ -2,12 +2,11 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
-package veyron2
+package v23
 
 import (
-	jandroid "v.io/x/jni/v23/android"
 	jcontext "v.io/x/jni/v23/context"
 	ji18n "v.io/x/jni/v23/i18n"
 	jsecurity "v.io/x/jni/v23/security"
@@ -33,9 +32,6 @@
 	if err := jsecurity.Init(jEnv); err != nil {
 		return err
 	}
-	if err := jandroid.Init(jEnv); err != nil {
-		return err
-	}
 	if err := jaccess.Init(jEnv); err != nil {
 		return err
 	}
diff --git a/v23/jni_android.go b/v23/jni_android.go
new file mode 100644
index 0000000..9ae4b55
--- /dev/null
+++ b/v23/jni_android.go
@@ -0,0 +1,17 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build android
+
+package v23
+
+import "syscall"
+
+// #include "jni.h"
+import "C"
+
+//export Java_io_v_v23_android_RedirectStderr_nativeStart
+func Java_io_v_v23_android_RedirectStderr_nativeStart(env *C.JNIEnv, jRuntime C.jclass, fileno C.jint) {
+	syscall.Dup2(int(fileno), syscall.Stderr)
+}
diff --git a/v23/security/access/jni.go b/v23/security/access/jni.go
index 602344b..a7760b3 100644
--- a/v23/security/access/jni.go
+++ b/v23/security/access/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package access
 
diff --git a/v23/security/access/util.go b/v23/security/access/util.go
index 535f9e9..c5b73fc 100644
--- a/v23/security/access/util.go
+++ b/v23/security/access/util.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package access
 
diff --git a/v23/security/authorizer.go b/v23/security/authorizer.go
index b4a4956..5b0eb78 100644
--- a/v23/security/authorizer.go
+++ b/v23/security/authorizer.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
diff --git a/v23/security/call.go b/v23/security/call.go
index 71e1acf..7bd44a3 100644
--- a/v23/security/call.go
+++ b/v23/security/call.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
diff --git a/v23/security/caveats.go b/v23/security/caveats.go
index 8ff02da..7740637 100644
--- a/v23/security/caveats.go
+++ b/v23/security/caveats.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
diff --git a/v23/security/jni.go b/v23/security/jni.go
index 46e3ced..33d5631 100644
--- a/v23/security/jni.go
+++ b/v23/security/jni.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
diff --git a/v23/security/principal.go b/v23/security/principal.go
index 938c61a..8d54d10 100644
--- a/v23/security/principal.go
+++ b/v23/security/principal.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
diff --git a/v23/security/roots.go b/v23/security/roots.go
index e524aaf..533eafa 100644
--- a/v23/security/roots.go
+++ b/v23/security/roots.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
diff --git a/v23/security/signer.go b/v23/security/signer.go
index 6ccbd17..7baf125 100644
--- a/v23/security/signer.go
+++ b/v23/security/signer.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
diff --git a/v23/security/store.go b/v23/security/store.go
index 06816cd..f61287e 100644
--- a/v23/security/store.go
+++ b/v23/security/store.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
diff --git a/v23/security/util.go b/v23/security/util.go
index e7e3c47..5c2c547 100644
--- a/v23/security/util.go
+++ b/v23/security/util.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build android
+// +build java android
 
 package security
 
