English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
الجزء الأول: ملف Podfile.lock
كما ذكرت سابقًا، عند بدء استخدام CocoaPods، بعد تنفيذ pod install، سيتم إنشاء ملف Podfile.lock. يبدو هذا الملف ليس له علاقة بنا، لكن يجب ألا يتم تجاهله.
هذا الملف يستخدم لتح conservar إصدارات المكتبات الضرورية التي تم تثبيتها باستخدام CocoaPods، بعد تثبيت SBJson وAFNetworking وReachability ثلاثة المكتبات الضرورية باستخدام CocoaPods، محتويات ملف Podfile.lock التالي سيكون:
PODS: - AFNetworking (2.1.0): - AFNetworking/NSURLConnection - AFNetworking/NSURLSession - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - AFNetworking/UIKit - AFNetworking/NSURLConnection (2.1.0): - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - AFNetworking/NSURLSession (2.1.0): - AFNetworking/NSURLConnection - AFNetworking/Reachability (2.1.0) - AFNetworking/Security (2.1.0) - AFNetworking/Serialization (2.1.0) - AFNetworking/UIKit (2.1.0): - AFNetworking/NSURLConnection - قابل الوصول (3.0.0) - SBJson (4.0.0) التكاليف الضرورية: - AFNetworking (~> 2.0) - قابل الوصول (~> 3.0.0) - SBJson (~> 4.0.0) تجميع إصدارات الميزات: AFNetworking: c7d7901a83f631414c7eda1737261f696101a5cd Reachability: 500bd76bf6cd8ff2c6fb715fc5f44ef6e4c024f2 SBJson: f3c686806e8e36ab89e020189ac582ba26ec4220 COCOAPODS: 0.29.0
أهمية ملف Podfile.lock تكمن في التطوير الجماعي. بالنسبة للكتابة التي لم يتم تحديد إصدار الديبendencies Pods في ملف Podfile، مثل:
pod 'SBJson'
هذا الجملة تستخدم للحصول على إصدار الديبendencies SBJson الأحدث.
عندما يكمل شخص ما في الفريق تنفيذ أمر pod install، يُسجل ملف Podfile.lock إصدار الديبendencies Pods في ذلك الوقت، وعندما يتحقق الفريق الآخر من هذا المشروع الذي يحتوي على ملف Podfile.lock، ويقومون بتنفيذ أمر pod install، فإن إصدار الديبendencies Pods الذي يتم تنزيله سيكون نفس الإصدار الذي تم تنزيله أولاً من قبل المستخدم. إذا لم يكن هناك ملف Podfile.lock، فإن جميع المستخدمين الذين يتنفذون أمر pod install سيحصلون على إصدار الديبendencies SBJson الأحدث، مما قد يؤدي إلى عدم تطابق إصدارات الديبendencies التي يستخدمها الفريق، وهو أمر مروع للتعاون الفريق.
في هذه الحالة، إذا كان الفريق يريد استخدام إصدار SBJson الديبendencies الأحدث، هناك طريقتان:
تعديل ملف Podfile ليتوجه إلى إصدار SBJson الديبendencies الأحدث؛
تشغيل أمر pod update;
بما أن ملف Podfile.lock مهم جدًا للتعاون الفريق، نحتاج إلى إضافته إلى إدارة الإصدارات.
بند Podfile
بالنسبة للمستخدمين العاديين، فإن ملف Podfile هو أكثر ما نتعامل معه باستخدام CocoaPods. تم تطوير CocoaPods باستخدام Ruby، لذا فإن لغة ملف Podfile هي لغة Ruby. وسأقوم بشرح ملف Podfile من الجوانب التالية:
1. موقع ملف Podfile
هذه مشكلة كانت متبقية في المقالة السابقة. في معظم الحالات، نوصي بوضع ملف Podfile في مجلد جذر المشروع، كما هو موضح في الشكل التالي:
في الواقع يمكن وضع ملف Podfile في أي مجلد، وما يجب القيام به هو تحديد مسار المشروع في ملف Podfile، وثم، مقارنة بالسابق، تم إضافة سطر واحد في بداية ملف Podfile، والذي يحتوي على محتوى كما يلي:
xcodeproj "/Users/wangzz/Desktop/CocoaPodsTest/CocoaPodsTest.xcodeproj" platform :ios pod 'Reachability', '~> 3.0.0' pod 'SBJson', '~> 4.0.0' platform :ios, '7.0' pod 'AFNetworking', '~> 2.0'
يستخدم كلمة المفتاح xcodeproj لتعيين المسار.
بعد ذلك، انتقل إلى مسار ملف Podfile، وأecute أمر pod install كما كان من قبل، وسينزل هذه مكتبات الاعتماد Pod، وسيتم وضع الملفات ذات الصلة في مجلد Podfile، كما هو موضح في الشكل التالي:
مثل سابقًا، ما زلنا بحاجة إلى فتح المشروع باستخدام ملف workspace الذي تم إنشاؤه هنا.
2、Podfile و الـ target
Podfile هو في الواقع用来 وصف الـ target في مشروع Xcode. إذا لم نحدد الـ target الذي يرتبط به Podfile بشكل صريح، سيقوم CocoaPods بإنشاء هدف بديهي يُسمى default، وسيكون متوافقًا مع الـ target الأول في مشروعنا. بمعنى آخر، إذا لم يتم تحديد الـ target في Podfile، فإن الـ target الأول في المشروع هو الوحيد الذي يمكنه استخدام مكتبات الاعتماد Pod الموصوفة في Podfile.
إذا كنت ترغب في وصف العديد من الـ target في Podfile في نفس الوقت، يمكن أن تكون هناك طرق مختلفة بناءً على الحاجة. للشرح، قم بإنشاء هدف آخر يُسمى Second في المشروع الأصلي، والآن يحتوي المشروع على الـ target التالية:
① استخدام مكتبات الاعتماد Pod نفسها في العديد من الـ target
على سبيل المثال، إذا كان الهدف CocoaPodsTest وSecond يحتاجان إلى مكتبات الاعتماد Pod Reachability، SBJson، AFNetworking الثلاثة، يمكن استخدام كلمة المفتاح link_with لتحقيق ذلك، وكتابة Podfile كما يلي:
link_with 'CocoaPodsTest', 'Second' platform :ios pod 'Reachability', '~> 3.0.0' pod 'SBJson', '~> 4.0.0' platform :ios, '7.0' pod 'AFNetworking', '~> 2.0'
هذه الطريقة تحقق من استخدام الـ target CocoaPodsTest وSecond مكتبات الاعتماد Pod نفسها
② استخدم مختلف الـ target مكتبات الاعتماد Pod مختلفة تمامًا
يستخدم هذا الهدف CocoaPodsTest مكتبات الاعتماد الثلاثة Reachability، SBJson، AFNetworking، ولكن الهدف Second يحتاج فقط إلى مكتبة الاعتماد OpenUDID، في هذه الحالة يمكن استخدام كلمة المفتاح target، ووصف Podfile كما يلي:
target :'CocoaPodsTest' do platform :ios pod 'Reachability', '~> 3.0.0' pod 'SBJson', '~> 4.0.0' platform :ios, '7.0' pod 'AFNetworking', '~> 2.0' end target :'Second' do pod 'OpenUDID', '~> 1.0.0' end
فيها، يتم استخدام do/end كمعلمات بداية ونهاية.
ثالثًا، إدارة إصدارات مكتبات Pods باستخدام ملف Podfile
عند إدخال مكتبة الاعتماد، يجب التعبير بوضوح أو بشكل ضمني عن إصدار المكتبة المحددة، والكتابة والمعاني كما يلي:
pod 'AFNetworking' // عدم تحديد إصدار المكتبة المحددة، مما يعني الحصول على أحدث إصدار في كل مرة pod 'AFNetworking', '2.0' // استخدام إصدار 2.0 فقط pod 'AFNetworking', '> 2.0' // استخدام إصدار أعلى من 2.0 pod 'AFNetworking', '>= 2.0' // استخدام إصدار أكبر أو مساوٍ لـ 2.0 pod 'AFNetworking', '< 2.0' // استخدام إصدار أقل من 2.0 pod 'AFNetworking', '<= 2.0' // استخدام إصدار أقل أو مساوٍ لـ 2.0 pod 'AFNetworking', '~> 0.1.2' // استخدام إصدار أكبر من 0.1.2 ولكن أقل من 0.2 pod 'AFNetworking', '~> 0.1' // استخدام إصدار أكبر من 0.1 ولكن أقل من 1.0 pod 'AFNetworking', '~>0' // تأثير هذا التحديد هو نفس تأثير عدم تحديد أي شيء، أي أننا نستخدم أحدث إصدار
ثالثًا، الأوامر الشائعة لـ CocoaPods
1. pod install
تثبيت مكتبات الاعتماد بناءً على محتويات ملف Podfile المحددة، إذا كان هناك ملف Podfile.lock ولم يتم تعديل ملف Podfile المحدد، سيتم تثبيت الإصدار المحدد في ملف Podfile.lock.
كلما تم تحديث ملف Podfile، يجب إعادة تنفيذ هذا الأمر لاستعادة تثبيت مكتبات Pods.
2. pod update
إذا كانت إصدار المكتبة المحددة في ملف Podfile غير مكتوبة بشكل دائم، عند تحديث المكتبة المحددة، سواء كان هناك ملف Podfile.lock أم لا، سيتم الحصول على أحدث إصدار من المكتبة المسموح به في ملف Podfile.
3、pod search
تنسيق الأمر هو:
$ pod search OpenUDID
OpenUDID هي المعلمة.
من واضح الاسم، أن هذا الأمر مخصص للبحث عن مكتبات Pods المتاحة بناءً على الاسم، والنتيجة التالية للتنفيذ:
-> OpenUDID (1.0.0) جهود المبادرة المفتوحة المصدر لتحقيق UDID عالمي ومستقر لـ iOS. pod 'OpenUDID', '~> 1.0.0' - الصفحة الرئيسية: http://OpenUDID.org - المصدر: https://github.com/ylechelle/OpenUDID.git - الإصدارات: 1.0.0 [المخزن الرئيسي]
في هذه الصفحة، وجدنا بيانات قابلة للإستخدام، حيث يتم وصف معلومات مكتبة OpenUDID المختصرة. في الواقع، ما نحتاجه هو السطر الثالث من النتيجة المذكورة أعلاه:
pod 'OpenUDID', '~> 1.0.0'
من الصعب عدم ملاحظة أن هذا هو ما نحتاج إلى إضافته إلى ملف Podfile.
باستخدام هذا الأمر، يمكنك العثور على مكتبات Pods المطلوبة بسهولة وسرعة.
4、pod setup
تنسيق الأمر هو:
$ pod setup
سيتم طباعة ما يلي بعد الإكمال:
إعداد مخزن CocoaPods الرئيسي تحديث 7cd4668..f3d3ced Fast-forward
سيتم طباعة العديد من معلومات التحديث القادمة.
هذا الأمر يستخدم لتحديث مكتبة Pods المحلية المحفوظة على جهاز الكمبيوتر. نظرًا لأن العديد من الناس يقومون بإنشاء أو تحديث مكتبات Pods، فإن تنفيذ هذا الأمر قد يستغرق وقتًا طويلاً، من فضلكم كن صبورين. نحتاج إلى تنفيذ هذا الأمر بشكل دوري، وإلا لن يتمكننا من العثور على مكتبات Pods الجديدة عند تنفيذ الأمر pod search.
الجزء الرابع: الوثائق المرجعية