1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

gg: fixes and Android support (#6161)

This commit is contained in:
spaceface777
2020-08-19 07:10:42 +02:00
committed by GitHub
parent c42ca84850
commit c1651bd271
8 changed files with 118 additions and 57 deletions

30
vlib/os/os_android.c.v Normal file
View File

@@ -0,0 +1,30 @@
module os
struct C.ANativeActivity {
assetManager &C.AAsetManager
}
struct C.AAset {}
fn C.AAssetManager_open(&C.AAsetManager, charptr, int) &C.AAset
fn C.AAsset_getLength(&C.AAset) int
fn C.AAsset_read(&C.AAset, voidptr, int) int
fn C.AAsset_close(&C.AAsset)
pub fn read_apk_asset(file string) ?[]byte {
act := &C.ANativeActivity(C.sapp_android_get_native_activity())
if isnil(act) {
return error('Could not get reference to Android activity')
}
asset := C.AAssetManager_open(act.assetManager, file.str, C.AASSET_MODE_STREAMING)
if isnil(asset) {
return error('File `$file` not found')
}
len := C.AAsset_getLength(asset)
buf := []byte{ len: len }
for {
if C.AAsset_read(asset, buf.data, len) > 0 { break }
}
C.AAsset_close(asset)
return buf
}