इस ट्यूटोरियल में, Bazel का इस्तेमाल करके, iOS के लिए आसान ऐप्लिकेशन बनाने का तरीका बताया गया है.
आप इन चीज़ों के बारे में जानेंगे
इस ट्यूटोरियल में, आपको यह पता चलेगा कि कैसे:
- Bazel और Xcode को इंस्टॉल करके एनवायरमेंट सेट अप करें. साथ ही, सैंपल प्रोजेक्ट डाउनलोड करें
- Bazel वर्कस्पेस सेट अप करें, जिसमें ऐप्लिकेशन का सोर्स कोड
होना चाहिए. साथ ही, एक
WORKSPACE
फ़ाइल सेट अप करनी चाहिए जो Workspace डायरेक्ट्री के टॉप लेवल की पहचान करती हो - ज़रूरी बाहरी डिपेंडेंसी के रेफ़रंस शामिल करने के लिए,
WORKSPACE
फ़ाइल को अपडेट करें BUILD
फ़ाइल बनाएं- Bazel चलाकर, सिम्युलेटर और iOS डिवाइस के लिए ऐप्लिकेशन बनाएं
- इस ऐप्लिकेशन को सिम्युलेटर और iOS डिवाइस पर चलाएं
अपना एनवायरमेंट सेट अप करें
शुरू करने के लिए, Bazel और Xcode इंस्टॉल करें और सैंपल प्रोजेक्ट पाएं.
Bazel इंस्टॉल करें
Bazel और उसकी डिपेंडेंसी इंस्टॉल करने के लिए, इंस्टॉल करने के निर्देशों का पालन करें.
Xcode इंस्टॉल करें
Xcode को डाउनलोड और इंस्टॉल करें. Xcode में कंपाइलर, SDK टूल, और ऐसे अन्य टूल होते हैं जो Apple ऐप्लिकेशन बनाने के लिए Bazel को ज़रूरी होते हैं.
सैंपल प्रोजेक्ट पाएं
आपको GitHub से ट्यूटोरियल के लिए सैंपल प्रोजेक्ट भी लेना होगा. GitHub
रेपो की दो शाखाएं होती हैं: source-only
और main
. source-only
की ब्रांच में,
सिर्फ़ प्रोजेक्ट के लिए सोर्स फ़ाइलें होती हैं. आप इस ट्यूटोरियल में इस ब्रांच की फ़ाइलों
का इस्तेमाल करेंगे. main
की ब्रांच में, सोर्स फ़ाइलें
और Bazel WORKSPACE
और BUILD
, दोनों फ़ाइलें शामिल हैं. ट्यूटोरियल पूरे कर लेने के बाद अपना काम देखने के लिए, इस ब्रांच में मौजूद फ़ाइलों का इस्तेमाल किया जा सकता है.
फ़ाइलों को source-only
ब्रांच में पाने के लिए, कमांड लाइन में यह डालें:
cd $HOME
git clone -b source-only https://github.com/bazelbuild/examples
git clone
निर्देश, $HOME/examples/
नाम की डायरेक्ट्री बनाता है. इस
डायरेक्ट्री में, Bazel के लिए कई सैंपल प्रोजेक्ट शामिल हैं. इस ट्यूटोरियल के लिए प्रोजेक्ट फ़ाइलें
$HOME/examples/tutorial/ios-app
में हैं.
वर्कस्पेस सेट अप करना
फ़ाइल फ़ोल्डर एक डायरेक्ट्री है, जिसमें एक या उससे ज़्यादा सॉफ़्टवेयर प्रोजेक्ट की सोर्स फ़ाइलें होती हैं. साथ ही, एक WORKSPACE
फ़ाइल और BUILD
फ़ाइलें होती हैं, जिनका इस्तेमाल करके Bazel सॉफ़्टवेयर बनाने के निर्देश देता है. फ़ाइल फ़ोल्डर में आउटपुट डायरेक्ट्री के सिंबॉलिक लिंक भी हो सकते हैं.
फ़ाइल फ़ोल्डर की डायरेक्ट्री, आपके फ़ाइल सिस्टम में कहीं भी मौजूद हो सकती है. इसे WORKSPACE
फ़ाइल के रूट में मौजूद होने से दिखाया जाता है. इस ट्यूटोरियल में, आपकी
वर्कस्पेस डायरेक्ट्री $HOME/examples/tutorial/
है. इसमें वे सैंपल प्रोजेक्ट फ़ाइलें शामिल हैं जिन्हें आपने पिछले चरण में GitHub रेपो से क्लोन किया था.
आपकी सुविधा के लिए, $WORKSPACE
एनवायरमेंट वैरिएबल अभी सेट करें, ताकि आपकी फ़ाइल फ़ोल्डर डायरेक्ट्री का रेफ़रंस दिया जा सके. कमांड लाइन में, यह डालें:
export WORKSPACE=$HOME/examples/tutorial
WORKSPACE फ़ाइल बनाएं
हर फ़ाइल फ़ोल्डर में WORKSPACE
नाम की एक टेक्स्ट फ़ाइल होनी चाहिए, जो टॉप-लेवल की फ़ाइल फ़ोल्डर में मौजूद हो. यह फ़ाइल खाली हो सकती है या इसमें सॉफ़्टवेयर बनाने के लिए ज़रूरी
बाहरी डिपेंडेंसी के रेफ़रंस हो सकते हैं.
फ़िलहाल, आपको एक खाली WORKSPACE
फ़ाइल बनानी होगी. यह सिर्फ़ फ़ाइल फ़ोल्डर डायरेक्ट्री की पहचान करने का काम करती है. बाद के चरणों में, आपको बाहरी डिपेंडेंसी की जानकारी जोड़ने के लिए फ़ाइल को अपडेट करना होगा.
कमांड लाइन में यह डालें:
touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE
इससे खाली WORKSPACE
फ़ाइल बन जाती है और खुल जाती है.
WORKSPACE फ़ाइल को अपडेट करें
Apple डिवाइसों के लिए ऐप्लिकेशन बनाने के लिए, Bazel को अपने GitHub रिपॉज़िटरी से
नए Apple बिल्ड नियमों
को हासिल करना होगा. इसे चालू करने के लिए, अपनी WORKSPACE
फ़ाइल में ये
git_repository
नियम जोड़ें:
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "build_bazel_rules_apple",
remote = "https://github.com/bazelbuild/rules_apple.git",
tag = "0.19.0",
)
git_repository(
name = "build_bazel_rules_swift",
remote = "https://github.com/bazelbuild/rules_swift.git",
tag = "0.13.0",
)
git_repository(
name = "build_bazel_apple_support",
remote = "https://github.com/bazelbuild/apple_support.git",
tag = "0.7.2",
)
git_repository(
name = "bazel_skylib",
remote = "https://github.com/bazelbuild/bazel-skylib.git",
tag = "0.9.0",
)
सोर्स फ़ाइलों की समीक्षा करें
$WORKSPACE/ios-app/UrlGet
में मौजूद ऐप्लिकेशन की सोर्स फ़ाइलों पर एक नज़र डालें. ध्यान दें, ऐप्लिकेशन के स्ट्रक्चर के बारे में जानने के लिए, आपको सिर्फ़ इन फ़ाइलों को देखना है. आपको इस ट्यूटोरियल को पूरा करने के लिए, किसी भी सोर्स फ़ाइल में बदलाव करने की ज़रूरत नहीं है.
BUILD फ़ाइल बनाएं
कमांड लाइन वाले निर्देश पर, बदलाव करने के लिए एक नई BUILD
फ़ाइल खोलें:
touch $WORKSPACE/ios-app/BUILD
open -a Xcode $WORKSPACE/ios-app/BUILD
नियम लोड करने का स्टेटमेंट जोड़ें
iOS टारगेट बनाने के लिए, Bazel को अपने GitHub रिपॉज़िटरी से
बिल्ड नियम लोड करने होंगे. इन नियमों को अपने प्रोजेक्ट पर उपलब्ध कराने के लिए, BUILD
फ़ाइल की शुरुआत में लोड करने का यह स्टेटमेंट जोड़ें:
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")
आपको सिर्फ़ ios_application
नियम लोड करना होगा, क्योंकि objc_library
नियम Bazel पैकेज में पहले से मौजूद होता है.
objc_library नियम जोड़ें
Bazel कई बिल्ड नियम देता है, जिनका इस्तेमाल करके आप iOS प्लैटफ़ॉर्म के लिए ऐप्लिकेशन बना सकते हैं. इस ट्यूटोरियल के लिए, आपको सबसे पहले
objc_library
नियम का इस्तेमाल करके, Bazel को ऐप्लिकेशन सोर्स कोड और Xib फ़ाइलों से स्टैटिक लाइब्रेरी बनाने का तरीका बताना होगा. इसके बाद,
ios_application
नियम का इस्तेमाल करके, आपको ऐप्लिकेशन बाइनरी और .ipa
बंडल को बनाने का तरीका बताना होगा.
अपनी BUILD
फ़ाइल में ये चीज़ें जोड़ें:
objc_library(
name = "UrlGetClasses",
srcs = [
"UrlGet/AppDelegate.m",
"UrlGet/UrlGetViewController.m",
"UrlGet/main.m",
],
hdrs = glob(["UrlGet/*.h"]),
data = ["UrlGet/UrlGetViewController.xib"],
)
नियम का नाम UrlGetClasses
लिखें.
ios_application नियम जोड़ें
ios_application
नियम, ऐप्लिकेशन बाइनरी बनाता है और .ipa
बंडल फ़ाइल बनाता है.
अपनी BUILD
फ़ाइल में ये चीज़ें जोड़ें:
ios_application(
name = "ios-app",
bundle_id = "Google.UrlGet",
families = [
"iphone",
"ipad",
],
minimum_os_version = "9.0",
infoplists = [":UrlGet/UrlGet-Info.plist"],
visibility = ["//visibility:public"],
deps = [":UrlGetClasses"],
)
ध्यान दें कि deps
एट्रिब्यूट ऊपर दी गई BUILD
फ़ाइल में जोड़े गए UrlGetClasses
नियम के आउटपुट को कैसे दिखाता है.
अब, फ़ाइल को सेव करें और बंद करें. अपनी BUILD
फ़ाइल की तुलना,
GitHub रेपो की main
ब्रांच में दिए गए
पूरे उदाहरण से की जा सकती है.
ऐप्लिकेशन बनाएं और डिप्लॉय करें
अब आप अपना ऐप्लिकेशन बनाने और उसे सिम्युलेटर और iOS डिवाइस पर डिप्लॉय करने के लिए तैयार हैं.
बनाया गया ऐप्लिकेशन, $WORKSPACE/bazel-bin
डायरेक्ट्री में मौजूद है.
इस ट्यूटोरियल के लिए पूरी हो चुकी WORKSPACE
और BUILD
फ़ाइलें, GitHub के रेपो की मुख्य ब्रांच में मौजूद हैं. अतिरिक्त सहायता या समस्या का हल के लिए आप अपने काम की तुलना पूरी हो चुकी फ़ाइलों से कर सकते हैं.
सिम्युलेटर के लिए ऐप्लिकेशन बनाएं
पक्का करें कि आपकी मौजूदा वर्किंग डायरेक्ट्री आपके Bazel फ़ाइल फ़ोल्डर में है:
cd $WORKSPACE
अब, सैंपल ऐप्लिकेशन बनाने के लिए, यह जानकारी डालें:
bazel build //ios-app:ios-app
Bazel ने सैंपल ऐप्लिकेशन लॉन्च किया और उसे बनाया. बिल्ड प्रोसेस के दौरान, इसका आउटपुट कुछ ऐसा दिखेगा:
INFO: Found 1 target...
Target //ios-app:ios-app up-to-date:
bazel-bin/ios-app/ios-app.ipa
INFO: Elapsed time: 0.565s, Critical Path: 0.44s
बिल्ड आउटपुट ढूंढना
.ipa
फ़ाइल और अन्य आउटपुट,
$WORKSPACE/bazel-bin/ios-app
डायरेक्ट्री में मौजूद होते हैं.
सिम्युलेटर में ऐप्लिकेशन को चलाएं और डीबग करें
अब iOS सिम्युलेटर का इस्तेमाल करके, Xcode से ऐप्लिकेशन को चलाया जा सकता है. सबसे पहले, Tulsi का इस्तेमाल करके Xcode प्रोजेक्ट जनरेट करें.
इसके बाद, प्रोजेक्ट को Xcode में खोलें और रनटाइम स्कीम के तौर पर कोई iOS सिम्युलेटर चुनें और चलाएं पर क्लिक करें.
किसी डिवाइस के लिए ऐप्लिकेशन बनाना
आपका ऐप्लिकेशन किसी iOS डिवाइस पर इंस्टॉल और लॉन्च हो, इसके लिए उसे डिवाइस मॉडल के हिसाब से सही प्रॉविज़निंग प्रोफ़ाइल की ज़रूरत होगी. तो निम्न कार्य करें:
अपने Apple डेवलपर खाते पर जाएं और अपने डिवाइस के लिए सही प्रॉविज़निंग प्रोफ़ाइल डाउनलोड करें. ज़्यादा जानकारी के लिए, Apple के दस्तावेज़ देखें.
अपनी प्रोफ़ाइल को
$WORKSPACE
में ले जाएं.(ज़रूरी नहीं)
.gitignore
फ़ाइल में अपनी प्रोफ़ाइल जोड़ें.अपनी
BUILD
फ़ाइल केios_application
टारगेट में यह लाइन जोड़ें:provisioning_profile = "<your_profile_name>.mobileprovision",
अब अपने डिवाइस के लिए ऐप्लिकेशन बनाएं:
bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64
इससे ऐप्लिकेशन, मोटे बाइनरी की तरह बन जाता है. किसी खास डिवाइस आर्किटेक्चर के लिए, बिल बनाने के विकल्पों में उसकी जानकारी दें.
किसी खास Xcode वर्शन के लिए, --xcode_version
विकल्प का इस्तेमाल करें. SDK टूल के किसी खास वर्शन
को बनाने के लिए, --ios_sdk_version
विकल्प का इस्तेमाल करें. ज़्यादातर मामलों में, --xcode_version
विकल्प काफ़ी होता है.
iOS का कम से कम वर्शन तय करने के लिए, अपनी BUILD
फ़ाइल के ios_application
बिल्ड नियम में minimum_os_version
पैरामीटर जोड़ें.
अपना ऐप्लिकेशन बनाने के लिए, कमांड लाइन के बजाय जीयूआई का इस्तेमाल करके भी तुलसी का इस्तेमाल किया जा सकता है.
किसी डिवाइस पर ऐप्लिकेशन इंस्टॉल करें
डिवाइस पर ऐप्लिकेशन को इंस्टॉल करने का सबसे आसान तरीका, Xcode लॉन्च करना और
Windows > Devices
कमांड का इस्तेमाल करना है. बाईं ओर दी गई सूची में से अपना प्लग-इन किया गया डिवाइस चुनें, फिर "इंस्टॉल किए गए ऐप्लिकेशन" के नीचे जोड़ें (प्लस का निशान) बटन पर क्लिक करके
और अपनी बनाई गई .ipa
फ़ाइल चुनकर ऐप्लिकेशन जोड़ें.
अगर आपका ऐप्लिकेशन आपके डिवाइस पर इंस्टॉल नहीं हो पाता है, तो पक्का करें कि आपने अपनी BUILD
फ़ाइल में
सही प्रॉविज़निंग प्रोफ़ाइल डाली है (पिछले सेक्शन में चौथा चरण).
अगर आपका ऐप्लिकेशन लॉन्च नहीं हो पाता है, तो पक्का करें कि आपका डिवाइस आपकी प्रावधान प्रोफ़ाइल का हिस्सा हो. Xcode में Devices
स्क्रीन पर मौजूद View Device Logs
बटन से अन्य जानकारी मिल सकती है कि क्या गड़बड़ी हुई है.
इसके बारे में और पढ़ें
ज़्यादा जानकारी के लिए, GitHub रेपो की मुख्य शाखा देखें.