Google Play Services के टकरावों का समाधान करना
विभिन्न फ्रेमवर्क के लिए अलग-अलग प्लगइन्स google-play-services लाइब्रेरी के विभिन्न संस्करणों का उपयोग कर सकते हैं, जिससे आपका प्रोजेक्ट संकलित होने में विफल हो सकता है या लाइब्रेरी संस्करण पुराना होने के कारण क्रैश हो सकता है।
निम्नलिखित अनुभाग विभिन्न प्लगइन्स के लिए समाधान प्रदान करते हैं।
लाइब्रेरी का स्थान
Anchor link toआप Google Play Services लाइब्रेरी को <Android SDK>/extras/google पर पा सकते हैं।
लाइब्रेरी दो प्रारूपों में उपलब्ध है:
-
मोनोलिथिक जार फ़ाइल (एक ही फ़ाइल में सभी Google Play Services घटक शामिल हैं):
sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar -
मॉड्यूलर aar फ़ाइलें (Android Archive), जहाँ प्रत्येक घटक एक अलग फ़ाइल में होता है:
sdk/extras/google/m2repository/com/google/android/gms/…
एक aar फ़ाइल को jar फ़ाइल में बदला जा सकता है (फिलहाल सभी फ्रेमवर्क aar का समर्थन नहीं करते हैं) फ़ाइल को अनज़िप करके (aar एक ज़िप आर्काइव है) और classes.jar - लाइब्रेरी का कोड लेकर।
1. Cordova
Anchor link toCordova पर सभी google play services टकराव gradle का उपयोग करके स्वचालित रूप से हल हो जाते हैं। कभी-कभी (उदाहरण के लिए, जब विभिन्न प्लगइन्स लाइब्रेरी के विभिन्न प्रमुख संस्करणों का उपयोग करते हैं) समाधान विफल हो सकता है और परिणामी बिल्ड में एक ही लाइब्रेरी के दो अलग-अलग संस्करण दिखाई दे सकते हैं।
2. Unity, Appcelerator Titanium
Anchor link toआप प्लगइन (या नमूना प्रोजेक्ट) में Google Play Services लाइब्रेरी पा सकते हैं। संभावित टकरावों को हल करने के लिए उन्हें अपडेट/बदलना/हटाना आसान है:
- Unity: https://github.com/Pushwoosh/pushwoosh-unity/tree/master/PushwooshUnitySample/Assets/Plugins/Android
- Unity और Google Analytics प्लगइन: Google analytics प्लगइन एक पुरानी google play लाइब्रेरी का उपयोग करता है, जिसे अपडेट करने की आवश्यकता है। अधिक जानकारी यहाँ: https://github.com/Pushwoosh/pushwoosh-unity/issues/5
rm -rf Assets/Plugins/Android/google-play-services_lib/libsrm -rf Assets/Plugins/Android/google-play-services_lib/rescp ${ANDROID_HOME}/extras/google/m2repository/com/google/android/gms/play-services-analytics/8.4.0/play-services-analytics-8.4.0.aar Assets/Plugins/Android/cp ${ANDROID_HOME}/extras/google/m2repository/com/google/android/gms/play-services-ads/8.4.0/play-services-ads-8.4.0.aar Assets/Plugins/Android/- Appcelerator Titanium (ध्यान दें कि मॉड्यूल का संस्करण इस दस्तावेज़ से तेज़ी से बदल सकता है!): https://github.com/Pushwoosh/pushwoosh-appcelerator-titanium/tree/master/Module-Source/android/src/com/pushwoosh/module
3. Adobe Air
Anchor link toANE एक्सटेंशन लें, इसे निकालें, इसे संशोधित करें, और इसे फिर से पैकेज करें।
PushNotification.ane के साथ निम्नलिखित उदाहरण का उपयोग करें:
unzip PushNotification.ane -d tmpयह कमांड .ane फ़ाइल की सामग्री को tmp डायरेक्टरी में निकालता है।
अब tmp/META-INF/ANE/Android-ARM/ और tmp/META-INF/ANE/Android-x86/ में आप सभी लाइब्रेरीज़ पा सकते हैं: android-support_, play-services_, जिन्हें संशोधित/अपडेट/हटाया गया हो सकता है।
यदि आप अभी भी ऊपर दिए गए दस्तावेज़ के लिंक का पालन करते हैं, तो tmp/META-INF/ANE/Android-ARM/platform.xml और tmp/META-INF/ANE/Android-x86/platform.xml को बदलें, फिर एक्सटेंशन को वापस ज़िप करें और सब कुछ सामान्य रूप से काम करना चाहिए।
यदि आपको यह त्रुटि मिलती है:
PushNotification.ane is not a valid native extension file.
निम्नलिखित चरणों का उपयोग करके एक्सटेंशन को फिर से पैकेज करें:
tmp/META-INF/ANE/Android-ARM/platform.xmlऔरtmp/META-INF/ANE/Android-x86/platform.xmlको हटा दें- ऊपर दिए गए लिंक में गाइड के अनुसार
tmp/META-INF/ANE/Android-ARM/android-depends.xmlऔरtmp/META-INF/ANE/Android-x86/android-depends.xmlको संशोधित करें - निम्नलिखित बैश कमांड चलाएँ:
#rename platform.xml on iOS, required to repackage the extensionmv tmp/META-INF/ANE/iPhone-ARM/platform.xml tmp/META-INF/ANE/iPhone-ARM/platform-iOS.xml
#pack the extension back with adtcd tmp/META-INF/ANE/“${flex.sdk}/bin/adt" -package -target ane PushNotification.ane extension.xml -swc ../../../../SWC-Pushwoosh/PushNotification.swc -platform iPhone-ARM -platformoptions iPhone-ARM/platform-iOS.xml -C iPhone-ARM/ . -platform Android-ARM -platformoptions Android-ARM/android-depends.xml -C Android-ARM/ . -platform Android-x86 -C Android-x86/ . -platformoptions Android-x86/android-depends.xml -platform default -C default/ .आप PushNotification.swc यहाँ पा सकते हैं: https://github.com/Pushwoosh/pushwoosh-adobe-air/blob/master/SWC-Pushwoosh/PushNotification.swc
4. Unreal Engine
Anchor link toUnreal Engine और Pushwoosh प्लगइन लगभग हमेशा एक-दूसरे के साथ टकराव करेंगे। इसका कारण यह है कि Unreal Engine में डिफ़ॉल्ट रूप से Google Play services होती हैं, और इंजन के विभिन्न संस्करण इन libs के विभिन्न संस्करणों का उपयोग करते हैं। Pushwoosh प्लगइन भी इन libs का उपयोग करता है, हालांकि एक अलग सबसेट का। Unreal Engine के लिए Pushwoosh प्लगइन को एकीकृत करते समय हमेशा सावधान रहें। भले ही आपका प्रोजेक्ट संकलित होता और अच्छी तरह से काम करता हुआ प्रतीत हो, सुनिश्चित करें कि Pushwoosh और Unreal Engine दोनों Google Play Services के समान संस्करण का उपयोग करते हैं। एक प्रोजेक्ट में google-play-services के विभिन्न संस्करणों का उपयोग करने से अपरिभाषित व्यवहार होता है।
टकराव को हल करने के लिए आपको निम्नलिखित करना चाहिए:
1. निर्धारित करें कि प्रोजेक्ट में कौन सी Google Play services लाइब्रेरी पहले से उपयोग की जा रही हैं। ${UNREAL_PROJECT}/Intermediate/Android/APK/JavaLibs और ${UNREAL_PROJECT}/Intermediate/Android/APK/libs डायरेक्टरी की जाँच करें। उदाहरण के लिए, Unreal Engine 4.15 का उपयोग करके बनाए गए नमूना प्रोजेक्ट में निम्नलिखित लाइब्रेरी हैं:
JavaLibs:
- downloader_library
- play-services-ads-lite-9.2.0
- play-services-auth-base-9.2.0
- play-services-basement-9.2.0
- play-services-drive-9.2.0
- play-services-gass-9.2.0
- play-services-plus-9.2.0
- support-v4-23.0.0
- play-services-ads-9.2.0
- play-services-auth-9.2.0
- play-services-base-9.2.0
- play-services-clearcut-9.2.0
- play-services-games-9.2.0
- play-services-nearby-9.2.0
- play-services-tasks-9.2.0
- pushwoosh-ue-plugin // Pushwoosh प्लगइन द्वारा जोड़ा गया
libs:
- SystemUtils.jar
- VrApi.jar
- play-services-gcm-9.2.0.jar // Pushwoosh प्लगइन द्वारा जोड़ा गया
- play-services-iid-9.2.0.jar // Pushwoosh प्लगइन द्वारा जोड़ा गया
2. यदि Pushwoosh और Unreal Engine में उपयोग की जाने वाली play-services* लाइब्रेरी के संस्करण मेल नहीं खाते हैं, तो इन लाइब्रेरी को Pushwoosh प्लगइन से हटा दें।
3. निर्धारित करें कि आपको Pushwoosh प्लगइन में कौन सी अनुपलब्ध लाइब्रेरी जोड़नी चाहिए। प्लगइन को android-support-v4, play-services-base, play-services-basement, play-services-gcm, play-services-iid लाइब्रेरी की आवश्यकता होती है। नमूना प्रोजेक्ट के लिए केवल play-services-gcm और play-services-iid ओवरलैप नहीं होते हैं, इसलिए इस विशेष मामले में केवल यही लाइब्रेरी जोड़ी जानी चाहिए।
4. Android SDK से .jar फ़ाइल को https://github.com/Pushwoosh/pushwoosh-unreal-engine/tree/master/Plugins/Pushwoosh/lib/Android/libs में रखकर लाइब्रेरी जोड़ें। Google Play लाइब्रेरी का स्थान इस लेख की शुरुआत में वर्णित है।
हमारे साथ अपनी प्रतिक्रिया साझा करें
Anchor link toआपकी प्रतिक्रिया हमें एक बेहतर अनुभव बनाने में मदद करती है। यदि आपको SDK एकीकरण प्रक्रिया के दौरान किसी भी कठिनाई का सामना करना पड़ता है, तो हमारे साथ अपने विचार इस फ़ॉर्म के माध्यम से साझा करें।