मैं बाहरी एसडीके का उपयोग करने की कोशिश करता हूं जिसमें जार फ़ाइल और कुछ *.so फ़ाइलें शामिल हैं। ग्रहण से नमूना प्रोजेक्ट भी है जिसमें इसमें एक ही फाइल शामिल है। जब मैं एंड्रॉइड स्टूडियो में प्रोजेक्ट आयात करता हूं तो यह ठीक काम करता है लेकिन जब मैंने आयातित प्रोजेक्ट से फाइलों को कॉपी करने की कोशिश की तो मेरे वर्तमान प्रोजेक्ट में यह त्रुटि UnsatisfiedLinkError

नमूना परियोजना लक्ष्य एपीआई १४, मेरा परियोजना लक्ष्य एपीआई २७। क्या मुझे अपनी वर्तमान परियोजना के लिए एनडीके समर्थन शामिल करना चाहिए और इसे *.so फाइलों को फिर से संकलित करना चाहिए या शायद नमूना से पुरानी फाइलों का उपयोग करने का कोई विकल्प है?

0
mircze 23 नवम्बर 2018, 23:42

1 उत्तर

सबसे बढ़िया उत्तर

1. main फोल्डर के तहत jniLibs नाम का फोल्डर बनाएं, स्ट्रक्चर नीचे अंजीर जैसा है।

 |–app:
    |–|–src:
    |–|–|–main
    |–|–|–|–jniLibs
    |–|–|–|–|–armeabi
    |–|–|–|–|–|–.so Files
    |–|–|–|–|–x86
    |–|–|–|–|–|–.so Files
    ...
    |–|–|–|–|–other abi folder such as armeabi-v7a
    |–|–|–|–|–|–.so Files
  1. प्रोजेक्ट libs फ़ोल्डर में .jar फ़ाइल रखें और module build.gradle फ़ाइल में नीचे की पंक्ति जोड़ें

    निर्भरता { कार्यान्वयन फ़ाइलें ('libs/your_own.jar') }

सब ठीक होना चाहिए।

संपादित: कुछ एंड्रॉइड डिवाइस (एमुलेटर) में 64-बिट प्रोसेसर हैं, यदि आपके जिनलिब्स में arm64 सबफ़ोल्डर नहीं है, तो आप इस फ़िल्टर (abiFilters) को अपने ऐप मॉड्यूल की बिल्ड.ग्रेडल फ़ाइलों में जोड़ सकते हैं:

defaultConfig {
    ...

    ndk {
        abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
    }

}

यह ऐप को केवल मौजूदा फ़ोल्डरों में .so फ़ाइलों का उपयोग करने के लिए कहेगा।

1
navylover 23 नवम्बर 2018, 22:24