2015-11-19 85 views
1

以前有人使用过Gomobile应用程序,并且在手机中成功创建了文件吗?我在Android 4.4.2的Galaxy S4上试过以下代码:Golang:Gomobile应用程序无法生成文件

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中编译应用程序,下面的代码是能够创建“zzz.txt”文件:

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

最后我想要将所有错误保存在文件中,以便我可以查看导致我的应用程序崩溃的原因,并且AnGoIde不支持许多软件包,因此我无法将其用于测试。有没有人成功地使用gomobile应用生成文件?

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

回答

2

要写入文件,您的应用需要某种形式的许可。如果您还没有创建AndroidManifest.xml。您可以使用-v标志自动为您创建文件gomobile的内容。 (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"中筛选出日志会起作用。

+0

谢谢你的作品! – Kyle

+0

有些人正在寻找解决方案的意见: – Kyle

+0

http://stackoverflow.com/questions/3593420/is-there-a-way-to-get-the-source-code-from-an-apk-file – Kyle

相关问题