मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

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.getRemoteFile null लौटाता है)।

अनिवार्य पैटर्न: पता लगाएँ और 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" का प्रयास करना (homeFolder null है → NPE)।

यह भी देखें

क्या यह पृष्ठ उपयोगी था?