# बिल्ड, साइनिंग और वितरण

> प्रति लक्ष्य पाइपलाइन का अंत — build.gradle, साइनिंग और हर प्लेटफ़ॉर्म पर प्रकाशन।

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

# बिल्ड, साइनिंग और वितरण 🖥️🤖🍎🌐

पाइपलाइन का अंत, प्रति लक्ष्य। हर launcher का अपना `build.gradle` है; टूलचेन **Java 17** है।

## प्रति लक्ष्य टास्क और आर्टिफ़ैक्ट
| लक्ष्य | Build | `mainClassName` | आर्टिफ़ैक्ट |
|---|---|---|---|
| 🖥️ Desktop | `gradlew :lwjgl3:run` (dev) / jar / इंस्टॉलर | `dev.crossfly.lwjgl3.Lwjgl3Launcher` | jar / नेटिव इंस्टॉलर |
| 🤖 Android | `gradlew :android:installDebug` / `assembleRelease` | `AndroidLauncher` | APK / **AAB** |
| 🍎 iOS | `gradlew :ios:launchIPhoneSimulator` / `.ipa` जनरेट करना | `dev.crossfly.IOSLauncher` | **`.ipa`** |
| 🌐 Web | `gradlew :web:webBundle` (alias `dist`) | `dev.crossfly.web.WebLauncher` | स्टैटिक बंडल |

## साइनिंग
| लक्ष्य | साइनिंग |
|---|---|
| 🤖 Android | **keystore** → `.aab`/APK release पर साइन करता है |
| 🍎 iOS | **certificado + provisioning profile** → `.ipa` पर साइन करता है |
| 🖥️ Desktop | OS के अनुसार इंस्टॉलर की साइनिंग (वैकल्पिक) |
| 🌐 Web | कोई साइनिंग नहीं — यह स्टैटिक सामग्री है |

## वितरण
- **🤖 Android** → Google Play (AAB) या सीधा APK।
- **🍎 iOS** → App Store / **TestFlight** (Xcode/Transporter के ज़रिए)।
- **🖥️ Desktop** → नेटिव इंस्टॉलर (jpackage/jlink) या एक्ज़ीक्यूटेबल jar।
- **🌐 Web** → `web/build/webapp/` की सामग्री को **किसी भी स्टैटिक सर्वर** पर होस्ट करें।

## रिलीज़ चेकलिस्ट
- [ ] डेस्कटॉप और वास्तविक लक्ष्य पर परीक्षण किया गया (देखें [परीक्षण](/docs/best-practices/testes))।
- [ ] स्क्रीनों/डेंसिटी पर रिस्पॉन्सिवनेस मान्य की गई (देखें [रिस्पॉन्सिवनेस](/docs/best-practices/responsividade))।
- [ ] अनुमतियाँ घोषित की गईं (Android `Manifest` / iOS `Info.plist`)।
- [ ] प्लेटफ़ॉर्म के अनुसार अनुपलब्ध सुविधाएँ संभाली गईं (देखें [मैट्रिक्स](/docs/platforms/overview))।
- [ ] साइनिंग कॉन्फ़िगर की गई (keystore / provisioning)।
- [ ] आइकन, *launch screen*, संस्करण/बिल्ड नंबर।
- [ ] स्टोर स्क्रीनशॉट जनरेट किए गए (`Main.getScreenShot(true).toPng(...)`)।

## प्रति लक्ष्य पूर्वापेक्षाएँ
- **🖥️ Desktop:** JDK 17; macOS पर, `-XstartOnFirstThread`।
- **🤖 Android:** Android SDK + build tools।
- **🍎 iOS:** **macOS + Xcode** + Apple डेवलपर खाता।
- **🌐 Web:** स्टैटिक फ़ाइल सर्वर।

## सामान्य त्रुटियाँ
- iOS को `Info.plist` में उपयोग कुंजियों के बिना सबमिट करना (अस्वीकृति)।
- APK प्रकाशित करना जब Play Store को **AAB** चाहिए।
- वेब बंडल को `assets/`/`assets.txt` साथ सर्व किए बिना होस्ट करना।

## यह भी देखें
- [Desktop](/docs/platforms/desktop-lwjgl3) · [Android](/docs/platforms/android) · [iOS](/docs/platforms/ios) · [Web](/docs/platforms/web-teavm)
