सामग्री पर जाएं

Google Play Services के टकरावों का समाधान करना

विभिन्न फ्रेमवर्क के लिए अलग-अलग प्लगइन्स google-play-services लाइब्रेरी के विभिन्न संस्करणों का उपयोग कर सकते हैं, जिससे आपका प्रोजेक्ट संकलित होने में विफल हो सकता है या लाइब्रेरी संस्करण पुराना होने के कारण क्रैश हो सकता है।

निम्नलिखित अनुभाग विभिन्न प्लगइन्स के लिए समाधान प्रदान करते हैं।

लाइब्रेरी का स्थान

Anchor link to

आप Google Play Services लाइब्रेरी को <Android SDK>/extras/google पर पा सकते हैं।

लाइब्रेरी दो प्रारूपों में उपलब्ध है:

  1. मोनोलिथिक जार फ़ाइल (एक ही फ़ाइल में सभी Google Play Services घटक शामिल हैं):

    sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
  2. मॉड्यूलर aar फ़ाइलें (Android Archive), जहाँ प्रत्येक घटक एक अलग फ़ाइल में होता है:

    sdk/extras/google/m2repository/com/google/android/gms/…

एक aar फ़ाइल को jar फ़ाइल में बदला जा सकता है (फिलहाल सभी फ्रेमवर्क aar का समर्थन नहीं करते हैं) फ़ाइल को अनज़िप करके (aar एक ज़िप आर्काइव है) और classes.jar - लाइब्रेरी का कोड लेकर।

1. Cordova

Anchor link to

Cordova पर सभी google play services टकराव gradle का उपयोग करके स्वचालित रूप से हल हो जाते हैं। कभी-कभी (उदाहरण के लिए, जब विभिन्न प्लगइन्स लाइब्रेरी के विभिन्न प्रमुख संस्करणों का उपयोग करते हैं) समाधान विफल हो सकता है और परिणामी बिल्ड में एक ही लाइब्रेरी के दो अलग-अलग संस्करण दिखाई दे सकते हैं।

2. Unity, Appcelerator Titanium

Anchor link to

आप प्लगइन (या नमूना प्रोजेक्ट) में Google Play Services लाइब्रेरी पा सकते हैं। संभावित टकरावों को हल करने के लिए उन्हें अपडेट/बदलना/हटाना आसान है:

Terminal window
rm -rf Assets/Plugins/Android/google-play-services_lib/libs
rm -rf Assets/Plugins/Android/google-play-services_lib/res
cp ${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/

3. Adobe Air

Anchor link to

ANE एक्सटेंशन लें, इसे निकालें, इसे संशोधित करें, और इसे फिर से पैकेज करें।

PushNotification.ane के साथ निम्नलिखित उदाहरण का उपयोग करें:

Terminal window
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.

निम्नलिखित चरणों का उपयोग करके एक्सटेंशन को फिर से पैकेज करें:

  1. tmp/META-INF/ANE/Android-ARM/platform.xml और tmp/META-INF/ANE/Android-x86/platform.xml को हटा दें
  2. ऊपर दिए गए लिंक में गाइड के अनुसार tmp/META-INF/ANE/Android-ARM/android-depends.xml और tmp/META-INF/ANE/Android-x86/android-depends.xml को संशोधित करें
  3. निम्नलिखित बैश कमांड चलाएँ:
Terminal window
#rename platform.xml on iOS, required to repackage the extension
mv tmp/META-INF/ANE/iPhone-ARM/platform.xml tmp/META-INF/ANE/iPhone-ARM/platform-iOS.xml
#pack the extension back with adt
cd 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 to

Unreal 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 एकीकरण प्रक्रिया के दौरान किसी भी कठिनाई का सामना करना पड़ता है, तो हमारे साथ अपने विचार इस फ़ॉर्म के माध्यम से साझा करें।