नमस्ते, प्रिय हभ्रवचन!
मैं नोकिया स्मार्टफोन के लिए विकास और प्रकाशन के अनुभव को साझा करना चाहता हूं। मैं यह दिखाने के लिए एक लक्ष्य निर्धारित नहीं करता कि सब कुछ अच्छा है या बुरा, और मैं अन्य मोबाइल प्लेटफ़ॉर्म के लिए इसकी तुलना विकास से नहीं करूँगा। यह पोस्ट अन्य लोगों के साथ अनुभव साझा करने का एक प्रयास है, जो शायद, अभी भी इस बारे में सोच रहे हैं कि क्या नोकिया के लिए सॉफ्टवेयर लिखना है, या बस करना शुरू कर दिया है। किसी भी मामले में, मुझे आशा है कि जानकारी किसी को मेरी गलतियों से बचने, समय बचाने और मोबाइल एप्लिकेशन के क्षेत्र में सफल होने में मदद करेगी। फिर बहुत सारे पाठ हैं, जो रुचि रखते हैं - बिल्ली में आपका स्वागत है।
कहानी। प्रारंभ।
सिम्बियन मोबाइल प्लेटफ़ॉर्म के नोकिया के विकास के साथ मेरा परिचय 2009 की शुरुआत में हुआ, जब मैंने पहली बार iPhone और Nokia 5800 के बाद शासन करने वाले कुछ हद तक उत्साह के आगे घुटने टेक दिए। इससे पहले, मेरे पास कभी कोई स्मार्टफ़ोन नहीं था - मैं विश्वविद्यालय में अपने तीसरे वर्ष में था। बस अतिरिक्त पैसा कमाने के लिए शुरू - सामान्य रूप से, विशिष्ट छात्र आधा-रोज़मर्रा का जीवन। नतीजतन, उन्होंने पैसे बचाए और एक नया नोकिया 5800 लिया। पसंद नोकिया पर गिर गई, क्योंकि इससे पहले केवल इस ब्रांड के फोन थे, और उपकरण उस समय के लिए बहुत उच्च स्तर पर थे। चूंकि मैं आईटी विशिष्टताओं में अध्ययन कर रहा था, इसलिए मैं जल्द ही डेवलपर के दृष्टिकोण से इस फोन को छूना चाहता था।
सिम्बियन C ++
उस समय, सिम्बियन के तहत, उन्होंने या तो जावा या सी ++ लिखा। चूंकि उस समय C ++ मेरे लिए बहुत परिचित था, इसलिए मैंने सिम्बियन के लिए इसकी "बोली" का अध्ययन करने का निर्णय लिया। सच कहूँ तो, नए मंच का अध्ययन कुछ कठिनाई के साथ दिया गया था:
- अवकाश अपवादों की नई अवधारणाएं (C ++ अपवादों का हल्का एनालॉग);
- दो-चरण ऑब्जेक्ट कंस्ट्रक्टर, लीव फ़ंक्शंस में ऑब्जेक्ट्स के साथ स्टैक (वे फ़ंक्शंस जो एक अपवाद को फेंक सकते हैं, और मेमोरी को साफ किया जाना चाहिए);
- प्रमाण पत्र प्राप्त करने और पैकेज पर हस्ताक्षर करने के साथ उपद्रव;
- विधानसभा नियम और पैकेज विधानसभा प्रणाली ही लिखना;
- संसाधन फ़ाइलों के माध्यम से संवाद बॉक्स लिखना और इन फ़ाइलों को जोड़ना;
- 3 पहचानकर्ताओं (यूआईडी) और विभिन्न अभिगम अधिकारों (क्षमताओं) का संयोजन;
- एसडीके सेटअप उलझा हुआ था, खासकर जब इनमें से कई एसडीके थे;
- कुछ उदाहरण और खराब प्रलेखन।
सामान्य तौर पर, जिन लोगों ने सिम्बियन C ++ के साथ काम किया, वे उन वर्षों की भयावहता को अच्छी तरह से याद करते हैं। हां, समय के साथ, निश्चित रूप से, आपको इसकी आदत हो जाती है, लेकिन फिर भी विकास प्रक्रिया में आपको अक्सर इन छोटी और न केवल चीजों से विचलित होना पड़ता है। वास्तव में, मैंने उस समय कुछ भी गंभीर नहीं लिखा था - उदाहरण के लिए, परीक्षा के लिए सभी प्रकार की चीट शीट और अन्य "हैलो, वर्ल्ड"। उस समय कोई ओवीआई स्टोर नहीं था, केवल घोषणाएं थीं। फिर भी, मुझे एक बहुत अच्छा अनुभव मिला जो भविष्य में काम आया।
Qt प्रकटन
2009 के अंत तक, मैं सिम्बियन C ++ को विकसित करने के बारे में किसी तरह भूल गया था - वहाँ बहुत प्रेरणा नहीं थी, और अंशकालिक अधिक से अधिक समय लग रहा था। इस बीच, नोकिया ने OVI स्टोर लॉन्च किया, नया iPhone 3GS सामने आया, और मोबाइल ऐप बाजार फलफूल रहा था। लेकिन साल के अंत में, नोकिया की दुनिया में एक नई घटना हुई - सिम्बियन और मैमो के समर्थन के साथ क्यूटी 4.6 ढांचे की रिहाई। यह सिर्फ इतना हुआ कि उस समय मैं सक्रिय रूप से क्यूटी पर विकास में लगा हुआ था, इसलिए यह अतीत को याद नहीं करना और जो कुछ बदला वह देखना पाप था। बहुत कुछ बदल गया है:
- एक नया क्यूटी क्रिएटर आईडीई कार्बाइड सी ++ को बदलने के लिए दिखाई दिया, जिसने क्यूटी, एक सुविधाजनक सहायता प्रणाली, और एक स्वचालित निर्माण प्रणाली के साथ बेहतर एकीकरण प्रदान किया - अब नियमित सी ++ के साथ सिम्बियन को विकसित करना अधिक आसान था और ग्राफिकल घटकों के एक शक्तिशाली सेट के साथ, भले ही पहले क्यूटी। सिम्बियन के तहत और गति के साथ चमक नहीं था;
- सिम्बियन के लिए एक बेहतर डिबगर दिखाई दिया है, जो क्यूटी वर्गों को "तैनात" करने में सक्षम था;
- पैकेज पर हस्ताक्षर करने और बनाने की प्रणाली को सरल बनाया;
- एक नया सिम्बियन एमुलेटर दिखाई दिया है।
सामान्य तौर पर, सिम्बियन के लिए विकास को सरल बनाने की दिशा में नोकिया की प्रगति ध्यान देने योग्य थी, जो आसान नहीं था। लेकिन पुरानी समस्याएं बनी रहीं, कहीं न कहीं नए जोड़े गए:
- क्यूटी निर्माता बहुत कच्चा था, अक्सर परियोजना के पुनर्निर्माण के बाद दुर्घटनाग्रस्त हो गया (उसने आज तक यह पाप किया है);
- असेंबली की गति बहुत कम थी - आप प्रक्रिया शुरू कर सकते हैं और चाय पीने जा सकते हैं या इंटरनेट पर लेख पढ़ सकते हैं, एक पूर्ण आश्वस्तता विशेष रूप से लंबी और दर्दनाक रूप से ली गई;
- 5800 डिबगर बहुत बार छोटी थी, इसने काम करना बंद कर दिया था, और क्यूटी निर्माता ने अक्सर फोन को नहीं देखा था;
- रिलीज़ किए गए एमुलेटर ने विंडोज के तहत काम किया, अर्थात्, एमुलेटर पर एप्लिकेशन का परीक्षण करने के लिए, इसे विंडोज के तहत बनाने के लिए आवश्यक था - यह सिर्फ अद्भुत है, लेकिन क्या होगा अगर यह विंडोज के तहत मेरे लिए नहीं बनाया गया है?
- कुछ Qt संवाद बहुत खराब दिखे (उदाहरण के लिए, QInputDialog), लेकिन उन्हें पुराने रूप में संसाधन फ़ाइल में जोड़ना काफी तुच्छ नहीं था, क्योंकि Qt Creator ने वास्तव में इस पर भरोसा नहीं किया था;
- विधानसभा नियम अभी भी मैन्युअल रूप से लिखे जाने थे।
अलग से, मैं दिखाई देने वाले OVI स्टोर पर ध्यान देता हूं। पहले, पंजीकरण का भुगतान किया गया था (50 यूरो), इसके अलावा, यदि आवश्यक हो, तो एक प्रमाण पत्र (अब पंजीकरण लागत प्रति यूरो) पर पैसा खर्च करना भी आवश्यक था। लेकिन प्रकाशन की तैयारी में और स्टोर के काम की प्रक्रिया में, "सुखद" छोटी चीजों का पता चला:
- किसी कारण से, एप्लिकेशन को अपडेट करते समय, विवरण पहले अपडेट किया जा सकता है, लेकिन केवल कुछ दिनों के बाद - कार्यक्रम ही। महान, हालांकि, जब उपयोगकर्ताओं को एक ऐसा ऐप मिलता है जो विवरण से मेल नहीं खाता है?
- सामान्य इंटरफ़ेस मैनुअल तुरंत दिखाई नहीं देते थे, इसलिए एक कचरा डंप बनाया गया था, इसलिए बोलने के लिए, जहां हर कोई फेंक दिया कि वे क्या चाहते थे;
- क्यूए को प्रकाशन से पहले आवेदन की जांच के लिए आवंटित समय को स्पष्ट रूप से कहीं भी विनियमित नहीं किया गया था, इसलिए, किसी ने एक महीने के लिए जाँच की। और अब वे आपके आवेदन के दो (!) सप्ताह को अपडेट कर सकते हैं। और तथ्य यह नहीं है कि परिणाम सकारात्मक होगा। और मंच उन संदेशों से भरा है जो विभिन्न लोग अनुप्रयोगों की जांच करते हैं और एक ही समय में अलग-अलग फैसले जारी करते हैं;
- ऐप पर ग्राहक की कोई प्रतिक्रिया नहीं है। केवल एक बेवकूफ़ रेटिंग प्रणाली है - आप इसे ठीक करने के लिए किसी व्यक्ति से गलती का विवरण नहीं पूछ सकते। इसके अलावा, कम रेटिंग के शेर का हिस्सा इस तथ्य से आता है कि उपयोगकर्ता ने एप्लिकेशन डाउनलोड नहीं किया है (ay, Nokia, क्या यह वास्तव में डेवलपर की समस्या है?);
- दुकान ही बहुत अजीब है। उदाहरण के लिए, कुछ एप्लिकेशन जिनके पास कोई उपयोगकर्ता रेटिंग नहीं है, उनके पास पहले से ही 5 स्टार हैं (क्या यह अधिकतम है)? किस तरह की योग्यता? या केवल स्क्रीनशॉट पर ध्यान देना क्यों संभव है (ध्यान!) आकार में 256x256 से अधिक नहीं? इस टुकड़े पर क्या दिखाया जा सकता है: एक स्क्रीन टुकड़ा या एक तस्वीर जिस पर आप कुछ भी नहीं देख सकते हैं, और स्क्रीन फोन पर वर्ग नहीं हैं! मैं अब भी इस पागलपन को नहीं समझ सकता;
- ऐसा लगता था कि नोकिया ने इस स्टोर के बारे में कोई जानकारी नहीं दी है, क्योंकि वे प्रकाशन के लिए आवेदन तैयार करने के सभी "नुकसान" का वर्णन नहीं कर सकते हैं। मुझे एक उदाहरण के साथ समझाता हूं: सिम्बियन आमतौर पर एसवीजी को स्वीकार नहीं करता है, एसवीजी टाइनी के मोबाइल संस्करण का उपयोग किया जाता है। लेकिन, जाहिर है, उसके साथ समस्याएं हैं। जब आप एसवीजी में एप्लिकेशन आइकन बनाते हैं और एडोब इलस्ट्रेटर में ऑब्जेक्ट के लिए एक छाया जोड़ते हैं, तो आप इसे टिनी एसवीजी में नोकिया के मालिकाना कार्यक्रम से आगे निकल जाते हैं, फिर फोन पर "स्मीयर" आइकन। जाहिर है, छाया समर्थित नहीं है। और केवल जब मैं गलती से नोकिया की साइट पर एक आइकन बनाने के उदाहरण के साथ एक वीडियो में आया था, मुझे पता चला कि छाया बनाने के लिए उनके पास इलस्ट्रेटर के लिए विशेष कार्य हैं। यही है, वे इस जाम के बारे में पूरी तरह से जानते थे, लेकिन इसके बारे में विकी में कुछ भी नहीं लिखा था! आप इसके बारे में क्यों नहीं लिख सकते हैं, क्योंकि हर कोई 10 मिनट के स्पष्ट वीडियो नहीं देखता है?
- नोकिया में बहुत सारे अलग-अलग डिवाइस हैं, और आपको कई पर जांच करने की आवश्यकता है, आपको इसे विभिन्न प्रणालियों के लिए इकट्ठा करने की आवश्यकता है (अब यह S60v5, अन्ना, बेले) है - इसमें बहुत समय लगता है।
उपरोक्त सभी को देखते हुए, मैं संक्षेप में बताऊंगा: कई बार ऐसे समय होते थे जब आवेदन की सामान्य तैयारी और प्रकाशन में स्वयं ही विकास की तुलना में अधिक समय लगता था, जो बहुत मीठा नहीं था। सच है, अब नोकिया ने क्यूटी पर स्विच करने के लिए डेवलपर्स के लिए सक्रिय रूप से अभियान चलाया है, जो उसके लिए एक महान भविष्य की भविष्यवाणी कर रहा है।
हरमाटन और क्यूटी क्विक का आगमन
तो, क्यूटी सक्रिय रूप से विकसित हो रहा था, उत्पादकता में सुधार हो रहा था, क्यूटी क्रिएटर में सुधार हो रहा था (फोन सिम्बियन ^ 3 के साथ गिरना बंद हो गया, और इस बीच मैंने एन 8 डिवाइस पर स्विच कर दिया)। असेंबली बहुत तेज हो गई, और अब मैंने खाली इंतजार पर नींद की रातें नहीं बिताईं। सिम्बियन विरासत के अन्य सभी भयावह संरक्षित थे और कहीं भी जाने के लिए नहीं सोचा था। मैं विशेष रूप से इस तथ्य को "पसंद" करता हूं कि कभी-कभी क्यूटी क्रिएटर में सब कुछ नहीं किया जा सकता है। उदाहरण के लिए, कुछ माइम प्रकार के लिए एक पहचानकर्ता लिखें (ताकि एप्लिकेशन स्वचालित रूप से दी गई फ़ाइल को खोल सके)। मुझे इसे अपने स्वयं के यूआईडी मैजिक के साथ अलग-अलग लाइब्रेरी के रूप में अलग-अलग एसडीके (3 टुकड़े) में इकट्ठा करना था, फिर असेंबली के नियमों को क्यूटी क्रिएटर को हाथ से जोड़ना था। और क्यूटी एप्लिकेशन के लिए इस माइम प्रकार के लिए समर्थन जोड़ना भी एक अलग महाकाव्य है।
लेकिन, जैसा कि अक्सर होता है, दुश्मन को किसी का ध्यान नहीं जाता। अब नोकिया ने नई क्यूटी क्विक (जेएस-आधारित भाषा) पर आवेदन लिखने की सिफारिश करना शुरू कर दिया है, जिसकी क्षमता, इसे हल्के ढंग से रखने के लिए, खराब थी (यदि आप एक फ़ाइल खुला संवाद चाहते हैं - तो इसे स्वयं लिखें!) QWidget पर आधारित पूर्ण-स्तरीय Qt की तुलना में। और नोकिया ने QWidget पर आधारित मोबाइल प्लेटफार्मों के लिए विकास की घोषणा की ... पुराना। जैसा कि वे कहते हैं, एक वर्ष से भी कम समय बीत चुका है। नहीं, नोकिया ने आगे उन पर एप्लिकेशन लिखने पर रोक नहीं लगाई, लेकिन आश्चर्य की बात है डेवलपर्स। आप इस तथ्य को कैसे पसंद करते हैं कि, समस्याओं के बिना MeeGo (जो, वास्तव में, लिनक्स है) के तहत अपने क्यूटी एप्लिकेशन को इकट्ठा करने के बाद, आप फोन को घुमाते समय खिड़की (केवल परिदृश्य मोड) के उन्मुखीकरण को बदलने में सक्षम नहीं होंगे? सभी विस्मयादिबोधकों को एक जवाब मिला: क्यूटी क्विक को फिर से लिखना। बस ऐसे ही। उन्होंने इस बात की दुहाई नहीं दी कि MeeGo प्लेटफ़ॉर्म को वे एप्लिकेशन नहीं मिलेंगे जो इसके लिए पूरी तरह से बनाए गए हैं, और डेवलपर्स बाजार खो देंगे।
और हमेशा की तरह, खुद MeeGo के लिए आवेदन की तैयारी आश्चर्य के बिना नहीं थी। उदाहरण के लिए, मेनू में एप्लिकेशन आइकन प्रदर्शित करना एक सामान्य कार्य है। लेकिन, किसी कारण से, क्यूटी क्रिएटर में डिफ़ॉल्ट बिल्ड नियम इस तथ्य को जन्म देते हैं कि यह प्रदर्शित नहीं होता है। इससे कोई फर्क नहीं पड़ता है, हम इंटरनेट पर खोज करते हैं, हम नोकिया विकी में समस्या को हल करने का एक तरीका खोजते हैं - हमें आइकन को किसी अन्य निर्देशिका में रखना होगा। ठीक है, सब कुछ एमुलेटर पर प्रदर्शित होना शुरू हुआ, लेकिन डिवाइस पर ही फिर से कुछ भी नहीं है। क्या ट्रिक?
मैं विशेष रूप से MeeGo के लिए एमुलेटर को नोट करना चाहता हूं। यह 400 मीटर लंबा शव है जो लोड होने में लंबा समय लेता है, बहुत धीरे-धीरे काम करता है, और इसमें केवल कुछ बटन होते हैं (यानी, एक्सेलेरोमीटर के साथ खेलना या ऐसा कुछ विफल होना)। लेकिन वास्तव में यह एक कड़े "चेहरे" और एक फर्मवेयर छवि के साथ एक नियमित QEMU है। ब्रावो, नोकिया के सज्जनों, डिवाइस के बिना MeeGo के तहत विकसित करना केवल अवास्तविक है।
नतीजतन, इस बिंदु पर, मुख्य नोकिया फोन पर विकसित करने के लिए, आपको निम्न उपकरणों की आवश्यकता होती है: S60v5, सिम्बियन ^ 3 (अन्ना, बेले) और MeeGo। बुरा नहीं है, है ना? इसके अलावा, विभिन्न उपकरणों के लिए, क्यूटी त्वरित घटकों और क्यूटी विगेट्स के अपने स्वयं के सेट। हर तरफ से आंसू बहाने में कमजोर? नतीजतन, मैंने MeeGo के लिए विकास जारी नहीं रखा, खुद को S60v5 और सिम्बियन ^ 3 तक सीमित कर लिया।
अंतिम कार्य। विंडोज फोन
जाहिर तौर पर नोकिया के डेवलपर्स पहले से ही इस तरह से किक मार रहे हैं, लेकिन पिछले साल जो हुआ उसकी उम्मीद किसी को नहीं थी। नोकिया ने कहा कि यह विंडोज फोन में बदल जाएगा, और सिम्बियन धीरे-धीरे कवर हो जाएगा। बहुत बढ़िया चाल। आज वे आपको बताते हैं - क्यूटी पर लिखें, कल - त्वरित पर लिखें, और परसों लिखें - वह सब कुछ भूल जाएं जो आप जानते थे - हम विंडोज पर स्विच कर रहे हैं। सबसे पहले, कई लोगों ने सोचा कि क्यूटी को विंडोज फोन में पोर्ट किया जाएगा, और सब कुछ ठीक हो जाएगा, लेकिन आधिकारिक मिथकों ने इन मिथकों का खंडन किया। हां, कई घटनाओं के इस मोड़ से हैरान थे, और डेवलपर्स के प्रति ऐसा रवैया।
फिलहाल, मंच काफी नया और युवा है, इसलिए मेरे पास समय की कमी और उचित इच्छा के कारण इसे आज़माने का समय नहीं है। हालांकि मैं मानता हूं कि इसमें रुचि है।
उपसंहार के रूप में
नोकिया उपकरणों के लिए विकास के दौरान, मैंने दोनों प्रोग्रामिंग कौशल हासिल किए और मोबाइल प्लेटफार्मों के लिए विकास का अनुभव प्राप्त किया। मैं यह नहीं कह सकता कि मुझे बहुत सारी सकारात्मक भावनाएँ प्राप्त हुईं। खुद के लिए, मैंने निष्कर्ष निकाला कि नोकिया डेवलपर्स के लिए बहुत ही अवहेलना कर रहा है, प्लेटफार्मों की छलांग लगाने की व्यवस्था कर रहा है और वास्तव में, चेहरे में सीधे धोखा दे रहा है। हां, विकास की प्रक्रिया को आसान बनाने की कोशिश की गई, लेकिन जाहिर है कि सिम्बियन दूर के अतीत में निहित है, कुछ हद तक, इस योजना को पूरा करने की अनुमति नहीं थी। कंपनी के पास स्पष्ट रूप से परिभाषित और निर्देशित विकास वेक्टर नहीं था, और डेवलपर्स ने इसके लिए भी भुगतान किया। अब सिम्बियन और MeeGo के लिए विकास को ध्यान में रखते हुए, आप Qt क्विक का उपयोग करके प्रक्रिया को सरल बना सकते हैं, लेकिन यह स्टोर के साथ सभी देरी को नहीं बचाएगा। विकास के अलावा समय बर्बाद करने के लिए तैयार रहें।
शायद विंडोज फोन कंपनी के आगमन के साथ नीति बदल जाएगी, लेकिन यह केवल समय दिखाएगा।
पीएस मैंने नोकिया को विकसित करके कुछ बड़ा पैसा बनाने का लक्ष्य निर्धारित नहीं किया है, और मैं अपने आवेदन पर ध्यान नहीं देना चाहता, इसलिए मैं इसे कॉल नहीं करता हूं। आमतौर पर वे यहां रुचि रखते हैं, लेकिन आपने एक या दूसरे तरीके से कमाई करने का कितना प्रबंध किया? जिज्ञासु के लिए, मैं पहले ही जवाब दे दूंगा: उस वर्ष के दौरान आवेदन में लगभग 1,500 यूरो आए, जिसमें से 30% नोकिया के पास गया। मैंने कोई प्रचार नहीं किया और विज्ञापन में शामिल नहीं हुआ। सामान्य तौर पर, डिवाइस की कीमत चुकानी पड़ती है, और यह अच्छा है :)