इस ट्यूटोरियल में Basel का इस्तेमाल करके, एक आसान iOS ऐप्लिकेशन बनाने का तरीका बताया गया है.
आप इन चीज़ों के बारे में जानेंगे
इस ट्यूटोरियल में आपको ये काम करने के बारे में जानकारी मिलेगी:
- Baज़र और Xcode इंस्टॉल करके, और प्रोजेक्ट का सैंपल डाउनलोड करके, एनवायरमेंट सेट अप करें
- ऐसा Basel Workspace सेट अप करें, जिसमें ऐप्लिकेशन के लिए सोर्स कोड शामिल हो. साथ ही, ऐसी
WORKSPACE
फ़ाइल सेट अप करें जो वर्कस्पेस डायरेक्ट्री के टॉप लेवल की पहचान करती हो - ज़रूरी बाहरी डिपेंडेंसी के रेफ़रंस शामिल करने के लिए,
WORKSPACE
फ़ाइल को अपडेट करें BUILD
फ़ाइल बनाएं- Basel को चलाते हुए, सिम्युलेटर और iOS डिवाइस के लिए ऐप्लिकेशन बनाएं
- ऐप्लिकेशन को सिम्युलेटर और iOS डिवाइस पर चलाएं
अपना एनवायरमेंट सेट अप करें
शुरू करने के लिए, Basel और Xcode इंस्टॉल करें और सैंपल प्रोजेक्ट पाएं.
Basel इंस्टॉल करें
Basel और उसकी डिपेंडेंसी को इंस्टॉल करने के लिए, इंस्टॉल करने के निर्देशों का पालन करें.
Xcode इंस्टॉल करें
Xcode को डाउनलोड और इंस्टॉल करें. Xcode में कंपाइलर, SDK, और अन्य टूल शामिल होते हैं, जिनकी ज़रूरत Basel के ऐप्लिकेशन को बनाने में होती है.
सैंपल प्रोजेक्ट डाउनलोड करें
आपको 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/
नाम की एक डायरेक्ट्री बनाता है. इस
डायरेक्ट्री में, Basel के लिए कई सैंपल प्रोजेक्ट शामिल हैं. इस ट्यूटोरियल की प्रोजेक्ट फ़ाइलें $HOME/examples/tutorial/ios-app
में हैं.
फ़ाइल फ़ोल्डर सेट अप करना
फ़ाइल फ़ोल्डर ऐसी डायरेक्ट्री होती है जिसमें एक या उससे ज़्यादा सॉफ़्टवेयर प्रोजेक्ट की सोर्स फ़ाइलें होती हैं. साथ ही, WORKSPACE
फ़ाइल और BUILD
फ़ाइलें होती हैं, जिनमें सॉफ़्टवेयर बनाने के लिए ऐसे निर्देश होते हैं जिनका इस्तेमाल Basel ने सॉफ़्टवेयर बनाने के लिए किया है. इस फ़ाइल फ़ोल्डर में, आउटपुट डायरेक्ट्री के सिम्बॉलिक लिंक भी हो सकते हैं.
वर्कस्पेस डायरेक्ट्री आपके फ़ाइल सिस्टम पर कहीं भी मौजूद हो सकती है. साथ ही, 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 डिवाइसों के लिए ऐप्लिकेशन बनाने के लिए, Basel को अपनी 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 टारगेट बनाने के लिए, जब भी बिल्ड चल रहा हो, तब भी Basel को अपनी GitHub रिपॉज़िटरी से बिल्ड के नियम लोड करने होंगे. अपने प्रोजेक्ट में इन नियमों को उपलब्ध कराने के लिए, अपनी BUILD
फ़ाइल की शुरुआत में यह लोड स्टेटमेंट जोड़ें:
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")
आपको सिर्फ़ ios_application
नियम लोड करना होगा, क्योंकि objc_library
नियम बेज़ल पैकेज में बनाया गया है.
objc_library नियम जोड़ें
Basel ने बिल्ड के कई नियम दिए हैं.
इन नियमों का इस्तेमाल करके, iOS प्लैटफ़ॉर्म पर ऐप्लिकेशन बनाया जा सकता है. इस ट्यूटोरियल के लिए, आपको सबसे पहले objc_library
नियम का इस्तेमाल करके, बेज़ल को ऐप्लिकेशन के सोर्स कोड और 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 रेपो की मुख्य ब्रांच
में मौजूद हैं. आप अतिरिक्त सहायता या समस्या का हल पाने के लिए अपने काम की तुलना पूरी हो चुकी फ़ाइलों से कर सकते हैं.
सिम्युलेटर के लिए ऐप्लिकेशन बनाएं
पक्का करें कि आपकी मौजूदा वर्किंग डायरेक्ट्री, आपके Basel Workspace में मौजूद है:
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 सिम्युलेटर चुनें, और Run पर क्लिक करें.
किसी डिवाइस के लिए ऐप्लिकेशन बनाएं
आपका ऐप्लिकेशन बनाने के लिए, ताकि वह किसी 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
पैरामीटर जोड़ें.
अपना ऐप्लिकेशन बनाने के लिए कमांड लाइन के बजाय, जीयूआई का इस्तेमाल करके भी तुलसी का इस्तेमाल किया जा सकता है.
किसी डिवाइस पर ऐप्लिकेशन इंस्टॉल करें
डिवाइस पर Xcode लॉन्च करने और
Windows > Devices
निर्देश का इस्तेमाल करके, आसानी से ऐप्लिकेशन इंस्टॉल किया जा सकता है. बाईं ओर दी गई सूची में से अपना प्लग-इन किया गया डिवाइस चुनें, फिर "इंस्टॉल किए गए ऐप्लिकेशन" में जाकर जोड़ें (प्लस का निशान) बटन पर क्लिक करके और अपनी बनाई .ipa
फ़ाइल चुनकर ऐप्लिकेशन जोड़ें.
अगर आपका ऐप्लिकेशन आपके डिवाइस पर इंस्टॉल नहीं हो पाता है, तो पक्का करें कि आपने अपनी BUILD
फ़ाइल में सही प्रावधान प्रोफ़ाइल तय की है (पिछले सेक्शन में चौथा चरण).
अगर आपका ऐप्लिकेशन लॉन्च नहीं हो पाता है, तो पक्का करें कि आपका डिवाइस आपकी प्रावधान प्रोफ़ाइल का हिस्सा हो. Xcode में Devices
स्क्रीन पर मौजूद View Device Logs
बटन, गड़बड़ी के बारे में अन्य जानकारी दे सकता है.
इसके बारे में और पढ़ें
ज़्यादा जानकारी के लिए, GitHub रेपो की मुख्य ब्रांच देखें.