# Android

> installDebug से AAB तक — launcher, अनुमतियों के कारण विलंबित प्रारंभ, मैनिफेस्ट, स्टेटस बार और Back।

Source: https://crossfly.dev/hi/docs/platforms/android — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# Android 🤖

## रन करना
```bash
gradlew :android:installDebug
```
`AndroidLauncher` (एक `AndroidApplication`) `getMain(canStart)` के ज़रिए `Main` बनाता है →
`new Main(canStart, getCommandline())`।

## ⚠️ अनुमतियों के कारण विलंबित प्रारंभ
Android पर, आप आमतौर पर UI को तुरंत **नहीं** उठाते — पहले अनुमतियाँ माँगते हैं। यह पैटर्न:
```java
// launcher में: canStart = false → UI अभी नहीं चढ़ती
initializeForView(getMain(false), config);
// … उपयोगकर्ता द्वारा अनुमतियाँ देने के बाद (callback) …
main.startApp(true);   // अब हाँ, UI चढ़ती है (delayed = true)
```
इस तरह, पहली स्क्रीन दिखने के समय कैमरा/GPS/Bluetooth पहले से ही अधिकृत होते हैं (देखें
अध्याय 4 §4.2)।

## मैनिफेस्ट और अनुमतियाँ
आप जो सुविधाएँ (कैमरा, स्थान, Bluetooth) उपयोग करते हैं, उनकी अनुमतियाँ `AndroidManifest.xml` में घोषित करें —
और `startApp(true)` से पहले रनटाइम में माँगें।

## स्टेटस बार और डेंसिटी
- **स्टेटस बार** को लेआउट में शामिल किया जाता है (`DeviceConfig.statusbarHeight`)।
- **डेंसिटी**: `Screen.scale` DPI को दर्शाता है; चूँकि आप `Relative`/फ़्रैक्शन उपयोग करते हैं, UI पहले से ही अनुकूलित हो जाती है।

## Back बटन
भौतिक **Back** बटन को ऐप कैप्चर करता है (डिफ़ॉल्ट रूप से यह शीर्ष विंडो का `hide()` करता है — देखें
[विंडो स्टैक](/docs/ui/navigation/the-window-stack))।

## पैकेजिंग
नेटिव `.so` लाइब्रेरीज़ (सहित `crossfly-lib`) ABI के अनुसार पैकेज की जाती हैं। साइनिंग/AAB और Play
Store पर अपलोड: [बिल्ड और वितरण](/docs/platforms/building-and-releasing)।

## सर्वोत्तम अभ्यास
- `startApp(true)` से **पहले अनुमतियाँ माँगें** (विलंबित प्रारंभ) — टूटी हुई स्क्रीनों से बचता है।
- विभिन्न डेंसिटी/स्क्रीनों पर परीक्षण करें; अनुकूलन के लिए `Relative` पर भरोसा करें।

## सामान्य त्रुटियाँ
- UI को उठाना (`canStart=true`) और उसके बाद ही अनुमति माँगना (पहली स्क्रीन पर सुविधा अनुपलब्ध)।
- `AndroidManifest.xml` में अनुमति भूल जाना (रनटाइम अनुरोध चुपचाप विफल हो जाता है)।

## यह भी देखें
- [बिल्ड और वितरण](/docs/platforms/building-and-releasing)
