COCOAPODS ماهي وما فائدتها وكيف تستخدمها

COCOAPODS ماهي وما فائدتها وكيف تستخدمها 

أحد أروع الأدوات المساعدة في تطوير تطبيقات IOS , OSX هي أداة COCOAPODS بحيث أنها تسهل لك العمل وتجعله أكثر ترتيباً وتنظيماً وبخطوات بسيطة واليوم بإذن الله سوف نتعرف عليها ونتعرف على طريقة إستخدامها وتثبيتها .

ماهي COCOAPODS ؟ 

cocoapods_logo

هي إداة تم تطويرها بلغة Ruby من قبل فريق عمل مميز ومجتمع من المطورين فائدتها بشكل عام إدارة وتنظيم المكاتب و بيئات العمل الخاصة لبرمجة أجهزة IOS وأيضا أجهزة OSX .

ما فائدة COCOAPODS وماهي المكاتب وبيئات العمل ؟ 

 عالم التطوير والبرمجة عالم واسع وسريع التطوير والأن يكاد يصبح شبه معدوم من يبني كل شي من الصفر ! فأصبح فكرة إعادة الإستخدام Code Reuse هي الأرجح والأفضل والأسرع لإنجاز المهام ، دعني أبسطها لك أكثر بمثال ?، مثلا في مرحلة تطوير تطبيق لي ومن ضمن مميزاته إستعلام عن صور ممجودة بالإنترنت وأحتجت أن أقوم بتخزين الصور التي أستعرضها من الإنترنت في الذاكرة بحيث يتم عرضها بالمستقبل بشكل أسرع وأفضل في تطبيقي فيصبح أمامي خيارين الأول أن أقوم ببناء دالة من الصفر وأستنفذ الكثير من الوقت والجهد وقد لا تكون بالكفاءة تلك التي أريدها أو إني أستخدم مكتبة تقوم بالعمل هذا وقد مرت بمراحل كثيره من التطوير والتعديل وقام بفحصها الكثير من المطورين حتى أصبحت ذات كفاءة عاليه وأوفر وقت وجهد بنسبة تصل 95% ؟! ، طبعاً الخيار الثاني .

إذاً المكاتب وبيئات العمل هي برمجيات ودوال جاهزة مفتوحة المصدر تمت برمجتها مسبقاً ومرت بمراحل متعددة من التطوير والتحديث والتعديل تنفذ مهام معينة ومختلفة وتسهل من التطوير والبرمجة بنسبة كبيرة جدا تصل إلى 95% وتزيد من كفاءة التطبيق بنسبة كبيرة أيضاً ، وهي متوفرة مختلف الأنوع والأفكار وبعدد كبير وضخم .

طيب وماذا يفعل COCOAPODS تحديداً ؟

 COCOAPODS يقوم بتنظيم جميع المكاتب وبيئات العمل التي تستخدمها وأيضاً يسهل عليك عملية إضافة وحذف المكاتب وليس ذلك فقط بل ايضا يسهل عليك تحديث المكاتب ! نعم تحديث المكاتب كما تعلم هي مكاتب تتطور دائماً فيصبح تحديثها متعب نوعاً ما وقد لا تعلم عن توفر تحديث لها وهنا يأتي دور COCOAPODS بمجرد سطر أوامر واحد وضغطة زر واحدة يقوم بفحص جميع المكاتب التي تستخدمها ويقوم بتحديثها بالكامل وأنت تنظر فقط و تحتسي فنجان القهوة ? ( كيف تحتسي بالله واضح اني تحمست مع  الفصحى ) .

هل تحمست عزيزي القارىء ؟ إذا نعم فدعنا نبدأ بكيفية تثبيتها وإستخدامها أم إذا لا فراجع حساباتك قد لا تكون مبرمج فنظر إلى مجال أخر ? (أمزح) .

دعنا نبدأ بسم الله :

 تثبيت / تنصيب  COCOAPODS : 

وهذه أبسط ما يكون فقط قوم بفتح تطبيق Terminal من نظامك osx-terminal

وقم بكتابة هذا الأمر

sudo gem install cocoapods

سوف يطلب منك كلمة المرور الخاصة لجهازك لآن أمر sudo هو أمر يتطلب صلاحيات root قوم بإدخال كلمة المرور وأنتظر حتى يتم التثبيت ويظهر لك إنه تم بنجاح .

ملاحظة الخطوة السابقة تفعلها مرة وحدة فقط إلى أن تقوم بتغير جهازك أو نظامك 

إنشاء ملف Podfile وربطه بمشروعك الخاص ب xcode : 

تقوم عن طريق Terminal الذهاب إلى ملف المشروع الخاص بك وإذا لم تكن خبير بأوامر Terminal سوف أعلمك طريقة سهلة جدا ،

فقط قم بسحب مجلد المشروع وأستمر بالضغط على cmd وضعه في Terminal ? حسناً أتبع الصورة التالية :

setup cocoapods

  حتى تصبح داخل مجلد المشروع من Terminal

setup cocoapods

الأن متبقي فقط خطوة وحدة وهي كتابة هذا الأمر :

pod init

سوف تجد انه تم إنشاء ملف بالإسم Podfile في نفس مجلد المشروع الخاص بك وهنا سوف يتم تحديد المكاتب التي نريدها وكل شي .

ملاحظة الخطوات السابقة تفعلها مرة واحدة فقط لكل مشروع 

كتابة ملف Podfile : 

تقوم بفتح الملف التي تم إنشائه عن طريق أي محرر نصوص مثلا TextEdit بالماك .

سوف نجد ملف وفيه الأكواد التالية :

setup cocoapods

نقوم بعمل التعديلات التاليه بحيث نحذف بعض الأسطر الخاصة في test وأيضا نقوم بحذف علامة # من بعض الأسطر والمؤشر عليها بالأسهم بحيث نحدد له الإصدار وغيره وسوف أقوم بشرحها لا تقلق

setup cocoapods

في هذا السطر  platform :ios, '8.0'  قمنا تحديد الأصدار الأدني الذي سوف يعمل التطبيق عليه بحيث يتم وضعه بالحسبان في حال وجود إصدارات خاصة للمكاتب لإصدارات ios .

في هذا السطر use_frameworks!  نخبره بأنه أستخدم بيئات العمل لأننا سوف نطور ونبرمج على swift

الأن فقط بقي لن خطوة وهي تحديد المكاتب التي نحتاجها وهنا يأتي السؤال

كيف أحصل على المكاتب وأعرفها ؟

ببساطة عزيزي القارىء بما أن المكاتب مفتوحة المصدر فبكل تأكيد سوف تجدها على github ولكي أسهل عليك الأمر أضع بيدك أكبر دليل لمكاتب Swift & Objective-C كل مكتبة ووصفها وتصنيفها ضعها بمفضلتك ?? .

 

awesome_logo

الأن بعد تحديد المكتبة أو المكاتب التي تريدها نقوم بوضعها في ملف Podfile بالشكل التالي

setp5

فكما ترا لقد قمت بوضع مكتبة Kingfisher والتي سوف تساعدني في المشكلة التي ذكرتها سابقاً لعملية تخزين الصور المستعرضه من الإنترنت في الجهاز وحصلت على هذا الكود  pod 'Kingfisher', '~> 2.0'  من نفس صفحة المكتبة في موقع github .

وبكل تأكيد تستطيع وضع أي عدد من المكاتب فقط قم وضعها أسفل المكتبة التي وضعتها سابقاً

setup cocoapods

أنتهينا هنا ? لا تنسى حفظ الملف

تحميل وتثبيت المكاتب لمشروعك الخاص : 

هذه أصعب خطوه وأطول خطوة كان الله بعونك فقط قم بكتابة هذا الإمر  pod install  أنتهينا ?

setup cocoapods

الأن تم تحميل جميع المكاتب ووضعها بمشروعك وما عليك إلا إستخدمها كما جاء بالشرح الخاص للمكتبة في صفحتها .

لكن تمهل عزيزي القارىء قبل البدء بإستخدام المكاتب لابد أولا من إقفال xcode ومن ثم فتح المشروع من هذا الملف والذي تم إنشاءه بعد تنفيد أمر  pod install

xcode cocoapods

ومن الأن فصاعداً تفتح المشروع من هذا الملف . وايضا لا تنسى أن تقوم بإعادة بناء المشروع عن طريق الضغط على cmd+B .

هنا أنت الأن تعلم وتعرف كيفية إستخدام cocoapods وأيضا المكاتب وكيف تتعامل معها وكل ما يخصها ، وايضا سوف أقوم بالشرح مستقبلاً بإذن الله للعديد من المكاتب وكيفية إستخدامها وكل ما يخصها ?? .

ماذا لو نريد حذف مكتبة أو تحديث المكاتب : 

ببساطة عزيزي القارئ إذا أردت حذف مكتبة أو إضافة مكتبة جديدة قم بتعديل ملف podfile وأحذف أو ضع المكتبة التي تريدها ومن ثم قم بتشغيل نفس الأمر  pod install  وأيضاً إذا أردت التحديث فقط قوم بتشغيل نفس الأمر ? الحياة أصبحت أسهل الأن ?? . لكن لاتنسى ان تكون في نفس المجلد الخاص بالمشروع من Terminal .

إلى هنا قد وصلت إلى نهاية هذا الموضوع أتمنى من الله أن أكون قد وفقت في الشرح وتوصيل المعلومة لكم إذا وجدت خطأ أو إذا لديك إقتراح لا تتردد بتصحيحي والتواصل معي مباشرةً .

أتمنى منك يا عزيزي أن تدعمني بنشر رابط هذا المقال ولكي تفيد غيرك ويعلم الله وحده الجهد والوقت الذي يتطلبه مني إنشاء هذه الدروس وقد سهلت لك أمر النشر فقط إختر الشبكة التي تود النشر فيها من الأسفل وسوف يتكفل الموقع بكل شيء ، تأكد دعمك لي بالنشر يحمسني أكثر وأكثر للمزيد .

سبحانك اللهم وبحمدك , أشهد أن لا إله إلا أنت , أستغفرك وأتوب إليك ..

الرابط المختصر للموضوع : xd7.me/13

التعليقات

  1. شرح متكامل ورائع للمبتدئين
    أخيرا فهمت ال‍cocoapods
    مدري ليش كنت احسها شيء صعب
    جزاك الله خير اخي عبدالرحمن
    طروحاتك جميله آستمر

    • عبدالرحمن باسم

      1 March، 2016 at 8:42 pm

      الحمد لله بأني قد وفقت بشكل أو بأخر بتوصيل المعلومة بأبسط ما يكون
      وجزاك الله خير أنت أيضاً على دعمك وتشجيعك
      شكرا لك وبإذن الله القادم أفضل

  2. شرح اكثر من رائع وموفق جدا جدا
    نتمنى ان تنزل دروسا اخرى عنها وعن اشياء اخرى تخص ios

    في انتظار المزيد يا صديقي
    شكرا

    • عبدالرحمن باسم

      14 June، 2016 at 4:07 pm

      بإذن الله سوف يكون في عدة مواضيع لهذا الجانب
      أسعدني تعليقك
      شكرا لك

  3. السلام عليكم ووحمه الله وبركاته
    اخي الفاضل : عبدالرحمن كلمات الشكر قليله في حقك مقابل ماتقدمه لنا من معلومات اعتبرها برأيي حصريه ، خصوصا اننا مبتدئين في لغة سويفت ..

    نطمح في المزيد ..

    الله يوفقك ويجزاك الف خير

    • عبدالرحمن باسم

      16 June، 2016 at 5:05 am

      وعليكم السلام ورحمة الله وبركاته
      الحمد لله إنني أستطعت أن أفيدكم ولو بالقليل
      وبإذن الله القادم أفضل وكلماتكم وقود لي
      شكرا 🙂

  4. يعطيك العافيه على الشرح فعلا شرح متعوب عليه

    كنت متخوف منها ولا اعرف استخدمها لانه استخدمتها قبل كذا و راح عليا المشروع

    بس الان شغال تمام معاها

    • عبدالرحمن باسم

      14 October، 2016 at 7:09 pm

      أسعدني ودك
      والحمد لله إنني أستطعت أن أقدم لكم الملعومة بأبسطما يمكن
      شكرا لك

      • عبدالرحمن

        17 April، 2017 at 2:21 pm

        السلام علكيم ورحمة الله وبركاتة ..

        اخوي عبدالرحمن لدي مشروع اخذته من github
        عند إدخال أمر [ pod install ]
        يظهر لي ادخل اليوزر والباسورد لـ القيت هوب
        من بعد الادخال يظهر الخطأ .

        [!] Error installing AlamofireXMLRPC
        [!] Failed to download ‘AlamofireXMLRPC’.

        أرجو تفيدني بالحل .

        جزاك الله خير .

  5. انا لسى مبتدئ هل هذة الاداة يتطلب قبلها تحميل برنامج معين ؟ ماهو البرنامج ؟ ‏⁦‪ ولو سمحت ايهما اسهل مع هذا البرنامج ماك او وندوز ؟ واين اجد هذا البرنامج ؟ وشكرا

  6. جزاك الله كل خير اخ عبد الرحمن

Leave a Reply

Your email address will not be published.

*