有没有人之前使用过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文件但不起作用的地方。
答案 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"
过滤掉日志,就可以了。