Я пробую собрать программу под андроид, в ней есть кусок работы с файловой системой:
//go:embed gopher.png
var imgBody []byte
f, err := os.CreateTemp("", "*.png")
defer func() {
_ = os.Remove(f.Name())
}()
_, err = io.Copy(f, bytes.NewReader(imgBody))
defer f.Close()
Я погулил, пишут что с андроид 10+ не работает выдача разрешений и какой-то requestLegacyExternalStorage.
Предлагают делать так:
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29"
tools:ignore="ScopedStorage" />
Я попробовал и с maxSdk и без, толку нет. Цель 30-33, как мне получить это разрешение или что использовать? Я в java 0.
Вот часть ошибки, ниже повторы в местах где используется переменная:
E/Go: go.Universe$proxyerror: runtime error: invalid memory address or nil pointer dereference
goroutine 11 [running]:
runtime/debug.Stack()
C:/Program Files/Go/src/runtime/debug/stack.go:24 +0x8e
github.com/hajimehoshi/ebiten/v2/internal/ui.(*userInterfaceImpl).run.func1()
C:/Users/Vladimir/AppData/Local/Temp/gomobile-work-3204208703/pkg/mod/github.com/hajimehoshi/ebiten/v2@v2.4.15/internal/ui/ui_mobile.go:270 +0x4e
panic({0xc1dfdc00, 0xc1fdc548})
C:/Program Files/Go/src/runtime/panic.go:890 +0x265
os.(*File).Name(...)
os.(*File).Name(...) === f.Name()
Вот по этому моменту я понял что проблема в доступе к файловой системе