09-08 05:27:32.627 32492 32492 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "stbi_image_free" referenced by "/data/app/~~6Z4w6jWbDrsWa6LUPrjeUQ==/io.vlang.ui2.calculator-qECkQ7b2Y4Z8-9PpQC_Kjw==/lib/arm64/libv_calculator.so"...
09-08 05:27:32.627 32492 32492 E AndroidRuntime: at io.vlang.ui2.calculator.VActivity.<clinit>(VActivity.java:6)
09-08 05:27:32.629 1931 2521 W ActivityTaskManager: Force finishing activity io.vlang.ui2.calculator/.VActivity
$ vab -v 3 --api 35 --name "tabs" --package-id io.vlang.ui2.tabs -o build/android/tabs.apk examples/tabs
Output will be signed with keystore at "/home/yeva/.cache/vab/keystore/debug.keystore"
Compiling V to C
Running v From: /home/yeva/git/ui2
/home/yeva/git/v/v -os android -cc clang -dump-modules "/tmp/vab/v/v.modules" -dump-c-flags "/tmp/vab/v/v.cflags" examples/tabs
Imported modules: ['builtin', 'builtin.closure', 'encoding.base64', 'fontstash', 'gg', 'main', 'math', 'math.bits', 'math.easing', 'math.internal', 'os', 'os.font', 'sokol.c', 'sokol.f', 'sokol.gfx', 'sokol.memory', 'sokol.sapp', 'sokol.sfons', 'sokol.sgl', 'stbi', 'strconv', 'strings', 'strings.textscanner', 'sync', 'sync.stdatomic', 'sync.threads', 'term.termios', 'time', 'ui2', 'v.embed_file', 'v.preludes.embed_file']
Garbage collection is true
Running v From: /home/yeva/git/ui2
/home/yeva/git/v/v -os android -apk -o "/tmp/vab/v_android.c" examples/tabs
Skipping compile. Hashes match 5a37442959debbb965a97f605fc097ba
Preparing package "io.vlang.ui2.tabs"...
Preparing apk base"
Removing previous package directory "/tmp/vab/package/apk"
Copying base files from "/home/yeva/.vmodules/vab/platforms/android" to "/tmp/vab/package/apk"
/home/yeva/.vmodules/vab/platforms/android/res/mipmap/icon.png
/home/yeva/.vmodules/vab/platforms/android/res/values/strings.xml
/home/yeva/.vmodules/vab/platforms/android/src/io/v/android/VActivity.java
/home/yeva/.vmodules/vab/platforms/android/AndroidManifest.xml
No overrides found in ""
Modifying base files...
Modifying native activity "/tmp/vab/package/apk/src/io/v/android/VActivity.java"
Replacing package id "io.v.android" with "io.vlang.ui2.tabs"
Replacing init library "v" with "tabs"
Removing default left-over directory "/tmp/vab/package/apk/src/io/v/android"
Removing default left-over directory "/tmp/vab/package/apk/src/io/v"
Modifying manifest "/tmp/vab/package/apk/AndroidManifest.xml"
Replacing package id "io.v.android" with "io.vlang.ui2.tabs"
Replacing version code "0" with "0"
Replacing debuggable "true" with "false"
Replacing minimum SDK version "21" with "21"
Replacing target SDK version "21" with "35"
Replacing declaration of OpenGL ES version "0x00020000" with "0x00030000"
Replacing activity name "io.v.android.VActivity" with "io.vlang.ui2.tabs.VActivity"
Copying assets...
Including assets from "assets"
Running aapt From: /home/yeva/git/ui2
/opt/android-sdk/build-tools/37.0.0/aapt package -v -f -m -M "/tmp/vab/package/apk/AndroidManifest.xml" -S "/tmp/vab/package/apk/res" -J "/tmp/vab/package/apk/src" -A "/tmp/vab/package/apk/assets" -I "/opt/android-sdk/platforms/android-35/android.jar"
Compiling java sources 1.8/1.8
Running javac From: /tmp/vab/package/apk
/usr/bin/javac -d obj -source 1.8 -target 1.8 -classpath . -sourcepath src -bootclasspath "/opt/android-sdk/platforms/android-35/android.jar" /tmp/vab/package/apk/src/io/vlang/ui2/tabs/R.java /tmp/vab/package/apk/src/io/vlang/ui2/tabs/VActivity.java
Running d8 From: /tmp/vab/package/apk
/opt/android-sdk/build-tools/37.0.0/d8 --min-api 21 --debug --lib "/opt/android-sdk/platforms/android-35/android.jar" --classpath obj --output classes.zip 'obj/io/vlang/ui2/tabs/VActivity.class' 'obj/io/vlang/ui2/tabs/R.class' 'obj/io/vlang/ui2/tabs/R$string.class' 'obj/io/vlang/ui2/tabs/R$mipmap.class' 'obj/io/vlang/ui2/tabs/R$attr.class'
Running aapt From: /tmp/vab/package/apk
/opt/android-sdk/build-tools/37.0.0/aapt package -v -f -S "/tmp/vab/package/apk/res" -M "/tmp/vab/package/apk/AndroidManifest.xml" -A "/tmp/vab/package/apk/assets" -I "/opt/android-sdk/platforms/android-35/android.jar" -F "/tmp/vab/tabs.unaligned.apk" bin
Adding libs to "/tmp/vab/tabs.unaligned.apk"...
Running aapt From: /tmp/vab/build
/opt/android-sdk/build-tools/37.0.0/aapt add -v "/tmp/vab/tabs.unaligned.apk" "lib/armeabi/libtabs.so"
Running aapt From: /tmp/vab/build
/opt/android-sdk/build-tools/37.0.0/aapt add -v "/tmp/vab/tabs.unaligned.apk" "lib/x86_64/libtabs.so"
Running aapt From: /tmp/vab/build
/opt/android-sdk/build-tools/37.0.0/aapt add -v "/tmp/vab/tabs.unaligned.apk" "lib/x86/libtabs.so"
Running aapt From: /tmp/vab/build
/opt/android-sdk/build-tools/37.0.0/aapt add -v "/tmp/vab/tabs.unaligned.apk" "lib/armeabi-v7a/libtabs.so"
Running aapt From: /tmp/vab/build
/opt/android-sdk/build-tools/37.0.0/aapt add -v "/tmp/vab/tabs.unaligned.apk" "lib/arm64-v8a/libtabs.so"
Running zipalign From: /home/yeva/git/ui2
/opt/android-sdk/build-tools/37.0.0/zipalign -v -f 4 "/tmp/vab/tabs.unaligned.apk" "/tmp/vab/tabs.unsigned.apk"
Running apksigner From: /home/yeva/git/ui2
/opt/android-sdk/build-tools/37.0.0/apksigner sign --ks "/home/yeva/.cache/vab/keystore/debug.keystore" --ks-pass pass:android --ks-key-alias "androiddebugkey" --key-pass pass:android --out "/tmp/vab/tabs.apk" "/tmp/vab/tabs.unsigned.apk"
Running apksigner From: /home/yeva/git/ui2
/opt/android-sdk/build-tools/37.0.0/apksigner verify -v "/tmp/vab/tabs.apk"
Removing previous output "build/android/tabs.apk"
Moving product from "/tmp/vab/tabs.apk" to "build/android/tabs.apk"
Generated /home/yeva/git/ui2/build/android/tabs.apk
vab
Version 0.4.3 284eb29
Path "/home/yeva/.vmodules/vab"
Base files "/home/yeva/.vmodules/vab/platforms/android"
os.args ['vab', 'doctor']
Extra
Commands
Allowed false
env
ANDROID_HOME=/opt/android-sdk
ANDROID_SDK_ROOT=/opt/android-sdk
ANDROID_NDK_ROOT=/opt/android-ndk
Java
JDK
Version 21.0.12
Path "/usr"
Keytool "/usr/bin/keytool"
Android
ENV
sdkmanager "/home/yeva/.cache/v/android/sdk/cmdline-tools/tools/bin/sdkmanager"
sdkmanager.version "4.0.1"
avdmanager "/home/yeva/.cache/v/android/sdk/cmdline-tools/tools/bin/avdmanager"
Managable false
SDK
Path "/opt/android-sdk"
Writable false
APIs available ['35', '32', '24', '21']
NDK
Version 30.0.14904198
Path "/opt/android-sdk/ndk"
Side-by-side true
min API level available 21
max API level available 36
arm64-v8a ['36', '35', '34', '33', '32', '31', '30', '29', '28', '27', '26', '25', '24', '23', '22', '21']
armeabi-v7a ['36', '35', '34', '33', '32', '31', '30', '29', '28', '27', '26', '25', '24', '23', '22', '21']
x86 ['36', '35', '34', '33', '32', '31', '30', '29', '28', '27', '26', '25', '24', '23', '22', '21']
x86_64 ['36', '35', '34', '33', '32', '31', '30', '29', '28', '27', '26', '25', '24', '23', '22', '21']
Build
API 35
Build-tools 37.0.0
Packaging
Format apk
Product
Name "V Test App"
Package ID "io.v.android"
Output ""
V
Version 0.5.2 9d72273
Path "/home/yeva/git/v"
|V full version |V 0.5.2 c1633ac5e186d2a04b1958bdfe8bc55312f51ec8.65c29f2
|:-------------------|:-------------------
|OS |linux, "Artix Linux"
|Processor |12 cpus, 64bit, little endian, 12th Gen Intel(R) Core(TM) i5-12400
|Memory |3.01GB/31.08GB
| |
|V executable |/home/yeva/git/v/v
|V last modified time|2026-09-08 02:58:21
| |
|V home dir |OK, value: /home/yeva/git/v
|VMODULES |OK, value: /home/yeva/.vmodules
|VTMP |OK, value: /tmp/v_1000
|Current working dir |OK, value: /home/yeva/git/ui2
| |
|env VFLAGS |"-cc tcc -no-memory-limit"
|Git version |git version 2.55.0
|V git status |0.5.2-598-g9d722730
|.git/config present |true
| |
|cc version |cc (GCC) 16.2.1 20260810
|gcc version |gcc (GCC) 16.2.1 20260810
|clang version |clang version 22.1.8
|tcc version |tcc version 0.9.28rc 2026-07-24 HEAD@85ba3ae8 (x86_64 Linux)
|tcc git status |thirdparty-linux-amd64 d6e7ac1b
|emcc version |N/A
|glibc version |ldd (GNU libc) 2.44
android ui2 apps built by vab crash with the following error message:
verbose vab output:
vab doctor: