इस ट्यूटोरियल में, Bazel का इस्तेमाल करके आसान iOS ऐप्लिकेशन बनाने का तरीका बताया गया है.
आपको क्या सीखने को मिलेगा
इस ट्यूटोरियल में, आपको ये काम करने का तरीका पता चलेगा:
- Baज़र और Xcode इंस्टॉल करके, और प्रोजेक्ट का सैंपल डाउनलोड करके, एनवायरमेंट सेट अप करें
- Bazel वर्कस्पेस सेट अप करें, जिसमें ऐप्लिकेशन का सोर्स कोड और
WORKSPACE
फ़ाइल हो. यह फ़ाइल, वर्कस्पेस डायरेक्ट्री के सबसे ऊपरी लेवल की पहचान करती है - ज़रूरी बाहरी डिपेंडेंसी के रेफ़रंस शामिल करने के लिए,
WORKSPACE
फ़ाइल को अपडेट करें BUILD
फ़ाइल बनाएं- सिम्युलेटर और iOS डिवाइस के लिए ऐप्लिकेशन बनाने के लिए, Bazel चलाना
- ऐप्लिकेशन को सिम्युलेटर और iOS डिवाइस पर चलाना
अपना एनवायरमेंट सेट अप करना
शुरू करने के लिए, Basel और Xcode इंस्टॉल करें और सैंपल प्रोजेक्ट पाएं.
Basel इंस्टॉल करें
Bazel और उससे जुड़ी डिपेंडेंसी इंस्टॉल करने के लिए, इंस्टॉल करने के निर्देशों का पालन करें.
Xcode इंस्टॉल करें
Xcode को डाउनलोड और इंस्टॉल करें. Xcode में कंपाइलर, SDK टूल, और ऐसे अन्य टूल होते हैं जिनकी ज़रूरत, Apple ऐप्लिकेशन बनाने के लिए Bazel को होती है.
सैंपल प्रोजेक्ट पाना
आपको GitHub से ट्यूटोरियल के लिए सैंपल प्रोजेक्ट भी चाहिए. GitHub रेपो में दो ब्रांच हैं: source-only
और main
. source-only
ब्रांच में, सिर्फ़ प्रोजेक्ट की सोर्स फ़ाइलें शामिल होती हैं. इस ट्यूटोरियल में, इस शाखा में मौजूद फ़ाइलों का इस्तेमाल किया जाएगा. main
ब्रांच में, सोर्स फ़ाइलें शामिल हैं. साथ ही, इसमें बेज़ल 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
फ़ाइल से दिखाया जाता है. इस ट्यूटोरियल में, आपकी 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 नियम जोड़ें
Basel ने बिल्ड के कई नियम दिए हैं.
इन नियमों का इस्तेमाल करके, 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
नियम के आउटपुट का रेफ़रंस कैसे देता है.
अब, फ़ाइल को सेव करें और बंद करें. GitHub रेपो की main
ब्रांच में, अपनी BUILD
फ़ाइल की तुलना ठीक किए गए उदाहरण से की जा सकती है.
ऐप्लिकेशन बनाना और उसे डिप्लॉय करना
अब आपका ऐप्लिकेशन बनाने और उसे सिम्युलेटर और iOS डिवाइस पर डिप्लॉय करने का समय आ गया है.
बनाया गया ऐप्लिकेशन, $WORKSPACE/bazel-bin
डायरेक्ट्री में मौजूद है.
इस ट्यूटोरियल की पूरी हो चुकी WORKSPACE
और BUILD
फ़ाइलें, GitHub रेपो की मुख्य ब्रांच
में मौजूद हैं. ज़्यादा मदद पाने या समस्या हल करने के लिए, अपने काम की तुलना, पहले से तैयार फ़ाइलों से की जा सकती है.
सिम्युलेटर के लिए ऐप्लिकेशन बनाना
पक्का करें कि आपकी मौजूदा वर्किंग डायरेक्ट्री, आपके Bazel फ़ाइल फ़ोल्डर में हो:
cd $WORKSPACE
अब, सैंपल ऐप्लिकेशन बनाने के लिए, यह जानकारी डालें:
bazel build //ios-app:ios-app
Baज़र, सैंपल ऐप्लिकेशन को लॉन्च करके उसे बनाता है. बिल्ड प्रोसेस के दौरान, उसका आउटपुट कुछ ऐसा दिखेगा:
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 डिवाइस पर इंस्टॉल और लॉन्च हो सके, Basel को उस डिवाइस मॉडल के लिए सही प्रॉविज़निंग प्रोफ़ाइल की ज़रूरत है. तो निम्न कार्य करें:
अपने Apple Developer Account में जाएं और अपने डिवाइस के लिए सही प्रॉविज़निंग प्रोफ़ाइल डाउनलोड करें. ज़्यादा जानकारी के लिए, 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
पैरामीटर जोड़ें.
कमांड लाइन के बजाय जीयूआई का इस्तेमाल करके, ऐप्लिकेशन बनाने के लिए भी Tulsi का इस्तेमाल किया जा सकता है.
किसी डिवाइस पर ऐप्लिकेशन इंस्टॉल करना
डिवाइस पर ऐप्लिकेशन इंस्टॉल करने का सबसे आसान तरीका यह है कि Xcode लॉन्च करें और Windows > Devices
कमांड का इस्तेमाल करें. बाईं ओर मौजूद सूची से, प्लग-इन किया गया डिवाइस चुनें. इसके बाद, "इंस्टॉल किए गए ऐप्लिकेशन" में जाकर, जोड़ें (प्लस का निशान) बटन पर क्लिक करके ऐप्लिकेशन जोड़ें. इसके बाद, अपनी बनाई गई .ipa
फ़ाइल चुनें.
अगर आपका ऐप्लिकेशन आपके डिवाइस पर इंस्टॉल नहीं हो पाता है, तो पक्का करें कि आपने अपनी BUILD
फ़ाइल में सही प्रावधान प्रोफ़ाइल तय की है (पिछले सेक्शन में चौथा चरण).
अगर आपका ऐप्लिकेशन लॉन्च नहीं हो पा रहा है, तो पक्का करें कि आपका डिवाइस, आपकी प्रोविज़निंग प्रोफ़ाइल का हिस्सा हो. Xcode में Devices
स्क्रीन पर मौजूद View Device Logs
बटन से, आपको गड़बड़ी के बारे में अन्य जानकारी मिल सकती है.
इसके बारे में और पढ़ें
ज़्यादा जानकारी के लिए, GitHub रेपो की मुख्य ब्रांच देखें.