Golang:Gomobile应用程序无法生成文件

时间:2015-11-19 22:28:44

标签: go gomobile

有没有人之前使用过gomobile app并且已成功在手机中创建文件?我在Android 4.4.2的Galaxy S4上尝试了以下代码:

package main
import (
    "golang.org/x/mobile/app"
    "golang.org/x/mobile/event/lifecycle"
    "golang.org/x/mobile/event/paint"
    "os"
)
func main() {
    os.Create("zzz.txt")
    app.Main(func(a app.App) {
        for e := range a.Events() {
            switch e := a.Filter(e).(type) {
            case lifecycle.Event:
                _=e
            case paint.Event:
                a.Publish()
            }
        }
    })
}

但是手机中没有创建文件。

我还尝试了一个名为“AnGoIde”的应用程序,它允许我们直接在Android中编写Go和编译,以下代码可以创建“zzz.txt”文件:

package main
import "os"
func main(){
    os.Create("zzz.txt")
}

最终我想将所有错误保存在一个文件中,这样我才能看到导致我的应用程序崩溃的原因,而AnGoIde不支持很多软件包,所以我不能将它用于我的测试。有没有人以前用gomobile应用程序成功生成文件?

P.S。我试图将目录指定为“/ storage / emulated / 0 / Go /”,这是我存储apk文件但不起作用的地方。

1 个答案:

答案 0 :(得分:2)

要写入文件,您的应用需要某种形式的权限。

如果您没有创建AndroidManifest.xml。您可以使用gomobile标志自动为您创建文件-v的内容。 (gomobile build -v

<manifest></manifest>标记之间添加以下行。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

再次构建应用。确保gomobile使用-v标志使用您的清单文件。我能够通过os.Create("/sdcard/zzz.txt")创建文件。我也需要这个用于调试,所以我不介意写一个特定的位置,即我的SD卡。 当然,在您的手机中,位置可能会发生变化。

此外,如果您只想要一些日志,则可以安装Android Debug Bridge并使用adb logcat。要从Go应用adb logcat | grep "I/GoLog"过滤掉日志,就可以了。