In order to make the artifacts of go build command preserved under WORK directory, this change modifies TMPDIR (TEMP/TMP for windows) environment variables to point to gomobile's tmpdir if -work flag is set. > gomobile init -work WORK=/gopath/pkg/gomobile/work-276689736 > ls /gopath/pkg/gomobile/work-276689736 README go-build823903592 openal android-ndk-r10e go-build858075903 go-build365743399 go-build921886344 > gomobile build -work golang.org/x/mobile/example/basic WORK=/tmp/gomobile-work-863381843 > ls /tmp/gomobile-work-863381843 go-build102034516 libbasic.so > gomobile bind -work github.com/hyangah/ivy WORK=/tmp/gomobile-work-355100962 > ls /tmp/gomobile-work-355100962 android go-build284034365 javac-output androidlib go_ivy Change-Id: I2f467e0063bc1c8b8c636a8cd6d100e86a99a91a Reviewed-on: https://go-review.googlesource.com/12720 Reviewed-by: David Crawshaw <crawshaw@golang.org>
44 lines
1021 B
Go
44 lines
1021 B
Go
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os/exec"
|
|
"path/filepath"
|
|
)
|
|
|
|
var cmdInstall = &command{
|
|
run: runInstall,
|
|
Name: "install",
|
|
Usage: "[-target android] [build flags] [package]",
|
|
Short: "compile android APK and install on device",
|
|
Long: `
|
|
Install compiles and installs the app named by the import path on the
|
|
attached mobile device.
|
|
|
|
Only -target android is supported. The 'adb' tool must be on the PATH.
|
|
|
|
The build flags -a, -i, -n, -x, -gcflags, -ldflags, -tags, and -work are
|
|
shared with the build command.
|
|
For documentation, see 'go help build'.
|
|
`,
|
|
}
|
|
|
|
func runInstall(cmd *command) error {
|
|
if buildTarget != "android" {
|
|
return fmt.Errorf("install is not supported for -target=%s", buildTarget)
|
|
}
|
|
if err := runBuild(cmd); err != nil {
|
|
return err
|
|
}
|
|
return runCmd(exec.Command(
|
|
`adb`,
|
|
`install`,
|
|
`-r`,
|
|
filepath.Base(pkg.Dir)+`.apk`,
|
|
))
|
|
}
|