diff --git a/cmd/gomobile/build.go b/cmd/gomobile/build.go
index a11865a..4c83ca0 100644
--- a/cmd/gomobile/build.go
+++ b/cmd/gomobile/build.go
@@ -271,11 +271,6 @@
 	cmd.flag.BoolVar(&buildWork, "work", false, "")
 }
 
-type binInfo struct {
-	hasPkgApp bool
-	hasPkgAL  bool
-}
-
 func init() {
 	addBuildFlags(cmdBuild)
 	addBuildFlagsNVXWork(cmdBuild)
diff --git a/cmd/gomobile/env.go b/cmd/gomobile/env.go
index a7f5485..ff32517 100644
--- a/cmd/gomobile/env.go
+++ b/cmd/gomobile/env.go
@@ -14,13 +14,9 @@
 
 // General mobile build environment. Initialized by envInit.
 var (
-	gomobilepath string // $GOPATH/pkg/gomobile
-
-	androidEnv map[string][]string // android arch -> []string
-
-	appleEnv map[string][]string
-
-	androidArmNM string
+	gomobilepath string              // $GOPATH/pkg/gomobile
+	androidEnv   map[string][]string // android arch -> []string
+	appleEnv     map[string][]string
 	appleNM      string
 )
 
diff --git a/cmd/gomobile/init.go b/cmd/gomobile/init.go
index 234b1c1..26da302 100644
--- a/cmd/gomobile/init.go
+++ b/cmd/gomobile/init.go
@@ -208,12 +208,6 @@
 	return nil
 }
 
-var commonPkgs = []string{
-	"golang.org/x/mobile/gl",
-	"golang.org/x/mobile/app",
-	"golang.org/x/mobile/exp/app/debug",
-}
-
 func mkdir(dir string) error {
 	if buildX || buildN {
 		printcmd("mkdir -p %s", dir)
@@ -237,16 +231,6 @@
 	return os.Symlink(src, dst)
 }
 
-func rm(name string) error {
-	if buildX || buildN {
-		printcmd("rm %s", name)
-	}
-	if buildN {
-		return nil
-	}
-	return os.Remove(name)
-}
-
 func doCopyAll(dst, src string) error {
 	return filepath.Walk(src, func(path string, info os.FileInfo, errin error) (err error) {
 		if errin != nil {
