猿问

Golang:Gomobile 应用无法生成文件

有没有人以前使用过 gomobile 应用程序并成功在手机中创建文件?我在使用 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 应用程序成功生成文件?


ps 我试图将目录指定为“/storage/emulated/0/Go/”,这与我存储 apk 文件的位置相同,但不起作用。


慕田峪4524236
浏览 149回答 1
1回答

炎炎设计

要写入文件,您的应用程序需要某种形式的权限。如果您没有创建一个AndroidManifest.xml.&nbsp;您可以gomobile使用该-v标志查看自动为您创建的文件内容。(&nbsp;gomobile build -v)在<manifest>和</manifest>标签之间添加以下行。<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />再次构建应用程序。确保gomobile使用该-v标志使用您的清单文件。我能够通过os.Create("/sdcard/zzz.txt").&nbsp;我也需要它来调试,所以我不介意写入特定位置,即我的 sdcard。当然,在您的手机中,位置可能会改变。此外,如果您只需要一些日志,您可以安装 Android Debug Bridge 并使用adb logcat。从你的 Go 应用中过滤掉日志adb logcat | grep "I/GoLog"是可行的。
随时随地看视频慕课网APP

相关分类

Go
我要回答