2016-08-18 8 views
5

में मौजूद मेरा आवेदन Here SDK और Twilio SDK का उपयोग करता है। दोनों मूल पुस्तकालयों का उपयोग करते हैं (यहां मूल पुस्तकालयों के साथ एसडीके स्थानीय रूप से/libs और/jniLibs फ़ोल्डरों से प्लग किया गया है, Twilio SDK jCenter से प्लग किया गया है)। लेकिन एंड्रॉइड 5.1 पर यहां एसडीके अपवाद फेंकता है "मिसिंग लाइब्रेरीज़: libMAPSJNI.so" हालांकि यह लाइब्रेरी परिणाम एपीके में मौजूद है। मैंने फ़ोल्डर खोला जहां मेरा प्रोग्राम डिवाइस पर स्थापित है और दो मामलों में सामग्री की तुलना की गई है: ट्विलियो एसडीके के साथ या बिना। अंतर यह है कि जब कनेक्ट किया गया Twilio API फ़ोल्डर/lib एक फ़ाइल है, और स्पष्ट कारणों से, लोडर इसके अंदर नहीं देख सकता है मूल पुस्तकालयों को यहां प्रारंभ करने की आवश्यकता है एसडीके। यदि Twilio gradle निर्भरता को हटा दें तो आम तौर पर असेंबली होती है। एक कारण क्या हो सकता है और इसे कैसे ठीक किया जा सकता है? यदि आवश्यक हो मैं इन libs के साथ परीक्षण परियोजना संलग्न कर सकते हैंग्राडल मूल पुस्तकालय डिवाइस पर नहीं पाए गए लेकिन एपीके

उत्तर

12

आप इस तरह अपने build.gradle संशोधित करने की आवश्यकता:

android { 
    (...) 
    splits { 
     abi { 
      enable true 
      reset() 
      include 'armeabi-v7a' 
      universalApk false 
     } 
    } 
    (...) 
} 

यह शायद इसलिए है क्योंकि Twilio एसडीके इसका समर्थन नहीं करता 86 का समर्थन करता है और यहाँ एसडीके वर्तमान में ।

+1

उत्कृष्ट, यह काम करता है। धन्यवाद। – Lumen

+1

अरे आर्टम, यहां ट्विलियो समुदाय के लिए कूदने के लिए धन्यवाद। क्या हम आपकी प्रशंसा साझा करने के लिए आपको शर्ट भेज सकते हैं? विवरण के लिए [email protected] पर एक ईमेल भेजें। –

+0

यह अन्य आर्किटेक्चर के लिए लागू होता है जहां एसडीके भी समर्थन नहीं करता है (जैसे arm64-v8a) – AndrewJC

0

एक splits ब्लॉक को परिभाषित करके आप APKs for each listed ABI बनाने के लिए Gradle बता सकते हैं:

include "armeabi", "armeabi-v7a", "x86", "mips" 

वैकल्पिक रूप से आप एक APK में सभी वांछित कपड़े शामिल कर सकते हैं निम्नलिखित फ़िल्टर लगाकर:

android { 
(...) 
defaultConfig { 
    (...) 
    ndk { 
     // allow only 32bit *.so libs 
     abiFilters "armeabi", "armeabi-v7a", "x86", "mips" 
    } 
} 

}

दोनों दृष्टिकोण 64 बिट कार्यक्षमता को छोड़ देंगे जो संघर्ष कर सकता है 32 बिट HERE SDK के साथ, लेकिन बाद वाला एक एकल एपीके के साथ अधिक उपकरणों का समर्थन करेगा।

कुछ पुस्तकालयों, नई Android Room Persistence पुस्तकालय की तरह, दो 64 बिट ABI जायके arm64-V8A और x86_64 के साथ 32 बिट जायके जोड़ें। चूंकि इस समय HERE SDK केवल 32 बिट lib प्रदान करता है, यह 64 बिट lib प्रकारों को बाहर करने के लिए सुरक्षित होना चाहिए। दूसरी तरफ यह उम्मीद की जाती है कि 64 बिट डिवाइस 32 बिट लिबों को गहन तरीके से संभाल सकते हैं।

संबंधित मुद्दे