यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
Web (TeaVM/WebGL) 🌐
अनुभाग का सबसे ईमानदार पेज। वेब लक्ष्य (मॉड्यूल web, WebLauncher) ऐप को
TeaVM के ज़रिए JavaScript में कंपाइल करता है और उसे एक <canvas> WebGL2 पर चलाता है (बैकएंड gdx-teavm)। यह GWT नहीं है और
न ही यह एम्बेडेड webview है: यह ब्राउज़र में चलने वाला स्वयं ऐप है।
बिल्ड और सर्व करना
gradlew :web:webBundle # (alias: dist)
web/build/webapp/ जनरेट करता है जिसमें index.html, web.js, scripts/howler.js, gdx.wasm.js, और
assets/ + assets.txt होते हैं। स्थानीय रूप से सर्व करें:
cd web/build/webapp && python -m http.server 8080
# http://127.0.0.1:8080/index.html खोलें
WebLauncher new TeaApplication(new Main(true, cmdline), config) करता है।
⚠️ क्या काम नहीं करता (stub है)
वेब पर, PlatformUtilsWeb अधिकांश सुविधाओं को stub के रूप में लागू करता है — कॉल मौजूद है लेकिन कुछ
उपयोगी नहीं करती:
| सुविधा | वेब पर व्यवहार |
|---|---|
WebContainer |
createWebView() null लौटाता है |
| GPS / स्थान | stub (कोई fix नहीं) |
| Bluetooth / रेडियो | stub (WirelessState.UNSUPPORTED) |
| बायोमेट्रिक्स | AuthResult.ERROR “Not supported” |
| आवाज़ (TTS/STT) | voiceToText → onError |
| नेटिव मानचित्र | समर्थित नहीं |
| कंपन / बैटरी | stub |
| फ़ाइल परसिस्टेंस | Device.homeFolder = null |
चूँकि
crossfly-lib(JNI) WebGL में लोड नहीं होती (Main.create()WebGL लक्ष्य परSharedLibraryLoaderको छोड़ देता है), जो कुछ भी नेटिव पर निर्भर है वह ऊपर बताए गए stubs पर आ जाता है।
क्या काम करता है
- पूरी UI रेंडर करना (यह WebGL2 canvas पर वास्तविक ऐप है)।
- बाहरी URL खोलना / डायल करना:
PlatformUtils.instance.view(url)/dial(numero)(के ज़रिएGdx.net.openURI)। - प्रतिबंधों के साथ HTTP (CORS; विफलता पर
Utils.getRemoteFilenullलौटाता है)।
अनिवार्य पैटर्न: पता लगाएँ और fallback पर जाएँ
if (PlatformUtils.instance.createWebView() != null) {
// Android/iOS/Desktop: एम्बेडेड webview
} else {
PlatformUtils.instance.view(url); // Web: नए टैब में खोलता है
}
और वेब पर फ़ाइल परसिस्ट करने का प्रयास करने से पहले Device.homeFolder == null जाँचें।
सर्वोत्तम अभ्यास
- वेब पर डिवाइस सुविधाओं को अक्षम/अनुकूलित करें (ऐसे बटन न छोड़ें जो कुछ नहीं करते)।
- वेब पर परसिस्टेंस: अपने बिल्ड में जो उपलब्ध हो उसका उपयोग करें (
homeFolderपर निर्भर न रहें)। - होस्ट करने से पहले स्टैटिक बंडल को स्थानीय रूप से सर्व करके परीक्षण करें।
सामान्य त्रुटियाँ
- वेब पर
WebContainer/GPS/बायोमेट्रिक्स मान लेना (ये stub हैं)। - वेब पर
Device.homeFolder + "arquivo"का प्रयास करना (homeFoldernullहै → NPE)।