Kotlin + स्पंदन UI पर iOS और Android के लिए ऐप

छवि

प्रविष्टि


सभी को नमस्कार। कुछ समय पहले, मैंने उसी समय एंड्रॉइड और आईओएस के लिए अपना प्रोजेक्ट बनाने का फैसला किया। स्वाभाविक रूप से, प्रौद्योगिकी की पसंद के बारे में सवाल उठे। कुछ हफ़्ते में मैंने लोकप्रिय ढेर को देखा और कोटलिन / मूल को चुना। चूंकि मैं एक एंड्रॉइड डेवलपर हूं, इसलिए मैं लंबे समय से कोटलिन से परिचित था, लेकिन मुझे स्विफ्ट के साथ बहुत अनुभव नहीं था और दोनों प्लेटफार्मों में अधिकांश कोड को प्राप्त करना चाहता था। इसलिए, सवाल तुरंत उठा, लेकिन iOS के लिए UI कैसे लिखना है। बाजार पर एक त्वरित नज़र ने सुझाव दिया कि फ़्लटर है, जो आपको दो प्लेटफार्मों के लिए एक साथ यूआई लिखने की अनुमति देता है। दरअसल, यह कहानी शुरू हुई।

यह लेख फ़्लटर के यूआई के रूप में बिल्ड अनुभव और कोर लॉजिक के लिए कोटलिन का वर्णन करता है। महत्वपूर्ण: बिल्ली के नीचे परियोजना को इकट्ठा करने के तरीके पर बहुत सारे चित्र और निर्देश हैं

सामग्री की तालिका



भाग 1


कोटलिन पर एक साझा पुस्तकालय बनाना


  1. कोटलिन मोबाइल साझा पुस्तकालय चुनें

    छवि
  2. आगे

    छवि
  3. हमारे काम करने वाले फ़ोल्डर को निर्दिष्ट करें, यहां मैंने प्रोजेक्ट के लिए एक अलग फ़ोल्डर बनाया है। चूंकि मेरे पास 4 अलग-अलग परियोजनाएं होंगी और उन्हें एक स्थान पर रखना अधिक सुविधाजनक होगा

    छवि
  4. यह sdk.dir में sdk.dir को निर्दिष्ट करने के लिए बनी हुई है। परियोजनाएं और परियोजना का निर्माण शुरू होता है, मेरे पास पथ /Users/vlad/Library/Android/sdk

    छवि
  5. प्रोजेक्ट संरचना, sample habr.example से संकुल नाम sample habr.example

    छवि
  6. यह प्रकाशन शुरू करने, wrapper कॉल करने का समय है। उसके बाद, .gradlew .gradlew हमारी परियोजना में दिखाई देगी और टर्मिनल से इसके साथ काम करना संभव होगा

    छवि
  7. टर्मिनल से चलाएँ ./gradlew publishToMavenLocal

    छवि
  8. उसके बाद, स्थानीय मावेन रिपॉजिटरी में, हमारे पास 4 फ़ोल्डर होंगे जिसमें हमारे पुस्तकालय झूठ बोलेंगे

    छवि

भाग २


Android एप्लिकेशन बनाना


Android प्रोजेक्ट बनाएं

यहां सब कुछ मानक है।

छवि

छवि

छवि

छवि

  1. लेखन के समय, परियोजना एक "टूटी" निर्भरता के साथ उत्पन्न हो रही है, इसलिए हम इसे jre7 के अंत में jre7 देते हैं, हमें koltin-stdlib मिलता है, जिसके बाद परियोजना का निर्माण शुरू होता है

    छवि
  2. build.gradle खोलें और repositories सेक्शन में mavenLocal जोड़ें। महत्वपूर्ण! repositories सेक्शन allprojects अंदर होना चाहिए और buildScript में नहीं

    छवि
  3. अब हम अपनी लाइब्रेरी को एक निर्भरता के रूप में जोड़ सकते हैं
    implementation 'habr.example:commonLibrary-jvm:0.0.1'

    छवि
  4. हम activity_main.xml खोलते activity_main.xml और हम main_activity_text id main_activity_text में निर्दिष्ट करते हैं

    छवि
  5. MainActivity.kt बस इस MainActivity.kt में टेक्स्ट सेट करें

    छवि
  6. महान, इस बिंदु पर हमारे पास एक एंड्रॉइड एप्लिकेशन है जो हमारी लाइब्रेरी से hello() फ़ंक्शन का उपयोग कर सकता है
    एमुलेटर पर हैलो ()
    छवि

भाग 3


एक iOS प्रोजेक्ट बनाएं


  1. एकल दृश्य ऐप चुनना

    छवि
  2. मूल जानकारी भरें और फ़ोल्डर का चयन करें। हमारे अन्य प्रोजेक्ट्स के लिए फ़ोल्डर रूट चुनना महत्वपूर्ण है, क्योंकि इसमें Xcode प्रोजेक्ट के नाम के साथ एक सबफ़ोल्डर बनाएगा

    छवि

    छवि
  3. सबसे पहले, CocoaPods जोड़ें। ऐसा करने के लिए, प्रोजेक्ट फ़ोल्डर में pod init चलाएं, प्रोजेक्ट को Xcode में बंद करें Xcode और pod install रन करें। हम देखते हैं कि स्थापना सफलतापूर्वक पूर्ण हुई

    छवि
  4. महत्वपूर्ण! CocoaPods /Pods CocoaPods को /Pods फ़ोल्डर जोड़ने की अनुशंसा नहीं करता है, लेकिन मैंने इसे वैसे भी किया। flutter को जोड़ने के बाद से, हम प्रत्येक build लिए निर्भरता को फिर से कॉन्फ़िगर करेंगे। अब तक, मुझे यह समाधान पसंद है
  5. फ़ाइल Awesome App.xcworkspace माध्यम से परियोजना खोलें

    छवि
  6. हम टर्मिनल को खोलते हैं, इसमें हम अपने commonLibrary फोल्डर में जाते हैं और रन करते हैं ./gradlew linkDebugFrameworkIos । उसके बाद, iOSFramework हमारे build फ़ोल्डर में दिखाई देता है iOSFramework

    छवि
  7. लक्ष्य चुनें

    छवि
  8. और इस लक्ष्य के लिए हम बाइनरी को जोड़ते हैं

    छवि
  9. अन्य जोड़ें चुनें

    छवि
  10. चरण 6 में प्राप्त framework लिए पथ निर्दिष्ट करें ( commonLibrary.framework )

    छवि

    छवि
  11. अब परियोजना में इस framework को प्रदर्शित किया जाना चाहिए

    छवि
  12. Build Settings जाएं और Enable Bitcode अक्षम Enable Bitcode

    छवि
  13. अब आपको यह निर्दिष्ट करने की आवश्यकता है कि हमारे framework को देखने के लिए, Framework Search Path खोलें

    छवि
  14. पथ निर्दिष्ट करें "${PODS_ROOT}/../../commonLibrary"recursive का चयन करना सुनिश्चित करें। बेशक, आप इसके बिना कर सकते हैं, यदि आप पथ को अधिक सटीक रूप से कॉन्फ़िगर करते हैं। लेकिन, चूंकि यह केवल परियोजना की शुरुआत है, अब हमारे लिए यह सुनिश्चित करना महत्वपूर्ण है कि यह पूरा गुच्छा काम करेगा। और हम रास्ता बदल सकते हैं और फिर

    छवि
  15. हमें यह सुनिश्चित करने की आवश्यकता है कि Xcode में प्रत्येक build साथ Xcode हमारा framework gradle का उपयोग करके frameworkBuild Phases खोलें

    छवि
  16. एक नया Script Phase जोड़ें

    छवि
  17. स्क्रिप्ट कोड जोड़ें।

     cd "${PODS_ROOT}/../../commonLibrary" echo $(pwd) ./gradlew linkIos 

    यहाँ हम बस अपनी लाइब्रेरी के प्रोजेक्ट फोल्डर में जाते हैं और रन करते हैं ./gradlew linkIosecho $(pwd) कॉल केवल कंसोल में दिखाने के लिए आवश्यक है जो हमें विशेष फ़ोल्डर में मिला है

    छवि
  18. हम अपने build phase को target dependencies ठीक बाद, शीर्ष पर धकेल देते हैं

    छवि
  19. अब ViewController खोलें और लाइब्रेरी से हमारे फ़ंक्शन में कॉल जोड़ें

    छवि
  20. हम अपना प्रोजेक्ट लॉन्च करते हैं और देखते हैं

    छवि

महान, इसका मतलब है कि हमने कोटलिन लाइब्रेरी को iOS प्रोजेक्ट से सही तरीके से जोड़ा है।
हमारे सभी अनुप्रयोगों में UI लिखने के लिए एक रूपरेखा के रूप में, स्पंदन जोड़ना बाकी है

भाग ४


एंड्रॉइड ऐप में स्पंदन जोड़ना


तब गीथूब के एक लेख ने मेरी बहुत मदद की

  1. रूट फ़ोल्डर पर जाएं जहां हमारी सभी परियोजनाएं स्थित हैं और flutter create -t module flutter_ui

    छवि
  2. settings.gradle खोलें settings.gradle और हमारे फ़्लटर-मॉड्यूल को एक सबप्रोजेक्ट के रूप में सक्षम करें

    छवि
  3. बिल्ड.ग्रेड फ़ाइल खोलें और हमारे प्रोजेक्ट को जोड़ें

    छवि
  4. MainActivity.kt को FlutterActivity

    छवि
  5. App.kt जोड़ें, जिसमें हम एप्लिकेशन स्टार्टअप पर App.kt को इनिशियलाइज़ करेंगे

    छवि
  6. प्रकटन को बदलें और कहें कि अब हमारे पास Application लिए एक वर्ग है

    छवि
  7. java8 जोड़ना सुनिश्चित करें, इसके बिना स्पंदन शुरू नहीं होगा

    छवि
  8. हम JVM लॉग से हैलो में UI देखते हैं, जिसका अर्थ है कि हमने यूआई को फ़्लटर पर और कोटलिन / नेटिव पर मुख्य पुस्तकालय में रखा है



    छवि
  9. MainActivity.kt एक विधि जोड़ें, जिसे हम MainActivity.kt से कॉल करेंगे। यहाँ, फ़्लटर से एक घटना पर, हम कोटलिन-लाइब्रेरी से अपना hello() लौटाते हैं

    छवि
  10. और main.dart कोड जोड़ें iOS/Android- एप्लिकेशन के iOS/Android- में विधि को कॉल करेगा

    छवि
  11. हमें मिलता है


भाग 5


IOS ऐप में स्पंदन जोड़ना


  1. हमारे Podfile अपडेट करना
     flutter_application_path = File.expand_path("../flutter_ui", File.dirname(path)) eval(File.read( File.join( flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding) 

    छवि

    छवि
  2. यह महत्वपूर्ण हैframework search paths की पहली पंक्ति में $(inherited) जोड़ें। यह जांचना सुनिश्चित करें कि आपके framework search paths खाली नहीं framework search paths

    छवि

    जब आप some/path/my_flutter/pubspec.yaml में निर्भरताएँ some/path/my_flutter/pubspec.yaml , तो आपको some/path/my_flutter में निर्भरता को अपडेट करने के लिए some/path/my_flutter से flutter packages get होने वाले some/path/my_flutter flutter packages get चलाने की आवश्यकता podhelper.rb । उसके बाद, some/path/MyApp से pod install रन करें
  3. केवल स्पंदन के लिए 1 और Build Phase जोड़ें। ऊपर हमने जो Script phase भाग 3 में जोड़ा है

     "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed 

    छवि
  4. हमारे AppDelegate को FlutterAppDelegate AppDelegate

    छवि
  5. ViewController अपडेट करें

    छवि
  6. एक NavigatorController में हमारे ViewController लपेटें

    छवि
  7. अब आवेदन शुरू होता है। लेकिन, अभी के लिए, हमारे पास पुस्तकालय और स्पंदन के बीच कोई संबंध नहीं है
  8. इस लिंक को FlutterMethodChannel का उपयोग करके FlutterMethodChannel

    छवि
  9. महान, अब iOS एप्लिकेशन मुख्य तर्क के लिए UI और kotlin लिए flutter का उपयोग करता है।



निष्कर्ष


यहाँ क्या कहना महत्वपूर्ण है: मैं यह ढोंग नहीं करता कि आपने कुछ नया या अनोखा सीखा है। मैंने सिर्फ अपने अनुभव साझा किए, क्योंकि यह सब एक साथ करने के लिए, मैंने लगभग 4 कार्य दिवस बिताए। और मुझे प्रोजेक्ट कोड के उदाहरण नहीं मिले जो कोटलिन / मूल और स्पंदन दोनों का उपयोग करता है

अंतिम परियोजनाएं

  1. परियोजना समूह
  2. स्पंदन-ui
  3. ios
  4. एंड्रॉयड
  5. आम-पुस्तकालय

उन लिंक्स की सूची, जिन्होंने मेरी मदद की, लेकिन अभी नहीं

  1. खुद ही झड़ जाता है
  2. देशी कोड और UI फ़्लटर प्लेटफ़ॉर्म-चैनल के बीच संबंध
  3. मौजूदा github ऐप में स्पंदन जोड़ें
  4. कोटलिन नेटिव देशी-अवलोकन

Source: https://habr.com/ru/post/hi437176/


All Articles