2016-05-23 15 views
10

मैं कई निर्भरता के साथ एक Android परियोजना है का उपयोग कर एक 3 पार्टी निर्भरता से एक .so फ़ाइल कैसे बहिष्कृत करें। उनमें से दो देशी पुस्तकालयों (फ़ाइलें .so) है (उन्हें निर्भरता ए और बी कॉल)। arm64-V8A, armeabi, armeabi-v7a, x86 और x86_64:एंड्रॉयड apk - Gradle

निर्भरता एक निम्नलिखित आर्किटेक्चर है। निर्भरता बी में निम्नलिखित आर्किटेक्चर हैं: आर्मेबी, x86

इस प्रकार जब मेरा ऐप आर्मेबी-वी 7 ए डिवाइस (उदाहरण के लिए) पर चलता है, और निर्भरता बी मूल विधि को कॉल करता है, तो इसे प्राप्त करने के लिए प्रासंगिक पुस्तकालय नहीं मिल सकता है (यह armeabi-v7a फ़ोल्डर में मौजूद नहीं है और armeabi के लिए जहां पुस्तकालय है स्वचालित रूप से वापस नहीं आता है के रूप में)।

वहाँ किसी भी तरह से इस के आसपास काम करने के लिए है? उदाहरण के लिए, मैं कुछ विन्यास मेरी build.gradle फाइल करने के लिए arm64-V8A, armeabi-v7a, और x86_64 फ़ोल्डरों के लिए क्रम में जोड़ सकते हैं नहीं मेरा अंतिम apk को एकीकृत किया जा के लिए?

मैंने पैकेजिंग विकल्प/बहिष्कृत करने का प्रयास किया है, लेकिन बिना किसी परिणाम के: प्रश्नों में फ़ोल्डर अभी भी हैं।

उत्तर

18

एक स्वच्छ निर्माण का प्रयास करें, मैंने नहीं किया और यह अभी भी पिछले निर्माण से फ़ाइलों को उठा रहा था। मैंने बस सुनिश्चित करने के लिए अपना ऐप/बिल्ड/फ़ोल्डर हटा दिया।

android { 
    packagingOptions { 
     exclude 'lib/armeabi-v7a/libSomeLibYouDontWant.so' 
    } 
} 

पहले से क्रैश होने वाले ऐप पर मेरे लिए काम किया।

एक वैकल्पिक उपयोग करने के लिए

android{ 
    defaultConfig{ 
     ndk{ 
      abiFilters "armeabi", "x86" 
     } 
    } 
} 

वहाँ कुछ इसी तरह के सवाल जो

Gradle exclude arm64 libs

How to use 32-bit native libraries on 64-bit Android device

+1

ही उपयोगी हो सकता है कर रहे हैं, तो निम्न सिंटैक्स का उपयोग कर सकते हो जाएगा ** एक संपूर्ण एबीआई फ़ोल्डर ** को अनदेखा करें, उदाहरण के लिए, 'armeabi-v7a' फ़ोल्डर के लिए:' बहिष्कृत करें 'lib/armeabi-v7a/** "' (देखें [पैकेजिंग विकल्प] (https: // google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html)) – Eido95

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