के साथ एंड्रॉइड स्टूडियो में मूल प्रीबिल्ट साझा लाइब्रेरी मैं एंड्रॉइड स्टूडियो में अपनी प्रोजेक्ट में देशी प्रीबिल्ट साझा लाइब्रेरी जोड़ने की कोशिश कर रहा हूं। मैं ग्रेडल-प्रयोगात्मक का उपयोग कर रहा हूं: 0.6.0-अल्फा 5। बहरहाल, जब भी मैं अपने आवेदन मॉडल के लिए पहले से बनाए गए साझा लाइब्रेरी जोड़ने का प्रयास करते हैं, मैं निम्नलिखित त्रुटि मिलती है:एंड्रॉइड स्टूडियो में प्रायोगिक ग्रेडल प्लगइन
Error:Cause: org.gradle.api.internal.PolymorphicDomainObjectContainerConfigureDelegate
पुस्तकालय आवेदन मॉडल है कि यह कैसे Google Gradle Experimental Guide द्वारा वर्णित है में जोड़ा जाता है:
repositories {
prebuilt(PrebuiltLibraries) {
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("/path_to_libs/${targetPlatform.getName()}/shared_lib.so")
}
}
}
android.sources {
main {
jniLibs {
dependencies {
library "shared_lib"
}
}
}
}
महत्वपूर्ण लाइन लाइब्रेरी "shared_lib" है। अगर मैं इस लाइन को अनमोल करता हूं तो कोई त्रुटि नहीं है।
चूंकि यह काम नहीं कर रहा है, इसलिए मैंने ph0b.com से मार्गदर्शिका का उपयोग करने का भी प्रयास किया है। वे देशी साझा पुस्तकालयों को जोड़ने के लिए एक अलग सिंटैक्स का उपयोग कर रहे हैं (मैं सिर्फ हेडर बाहर छोड़ दिया के बाद से मैं सभी हेडर के साथ एक ही निर्देशिका नहीं है):
repositories {
libs(PrebuiltLibraries) {
shared_lib {
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("/path_to_libs/${targetPlatform.getName()}/shared_lib.so")
}
}
}
}
android.sources {
main {
jni {
dependencies {
library "shared_lib" linkage "shared"
}
}
}
}
फिर भी, यह रूप में अच्छी तरह से काम नहीं करता। एंड्रॉइड स्टूडियो मेरी साझा_लिब को एपीके फ़ाइल में कॉपी नहीं करता है।
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader [...] couldn't find "shared_lib.so"
किसी को भी मुझे बता सकते हैं कि कैसे मैं अपने प्रोजेक्ट में देशी prebuild पुस्तकालय शामिल कर सकते हैं: इसलिए, मैं हमेशा निम्न त्रुटि मिल सकता है? मैं बिल्ड पैरामीटर के रूप में buildToolsVersion = '22 .0.1 ' और compileSdkVersion = 22 का उपयोग कर रहा हूं।
क्या आप शायद $ {targetPlatform.getName()} 'के बजाय हार्ड कोड किए गए पथ के साथ प्रयास कर सकते हैं? – RaGe
हां, मैंने पहले से ही कोशिश की है। यदि मैं एक अस्तित्वहीन फ़ाइल के पथ को बदलता हूं तो मुझे त्रुटि मिल सकती है क्योंकि ग्राडल निश्चित रूप से पथ को हल कर सकता है। अगर मेरी समस्या का समाधान हो तो मैं अभी भी खुश रहूंगा। हालांकि, मैंने अस्थायी रूप से प्रीबिल्ट पुस्तकालयों का उपयोग न करके मेरी समस्या का समाधान किया। मैंने अपनी सभी आवश्यक शीर्षलेख फ़ाइलों को 'cppFlags.add ("- I $ {file (" ./../../../ परियोजनाओं/परीक्षण/शामिल करें ")} के साथ जोड़ा।" ToString())' और सीपीपी 'srcDirs + =" ./../../../ परियोजनाओं/परीक्षण/src/"' jni के साथ फाइलें। लेकिन यह अभी भी प्रीबिल्ट पुस्तकालयों का उपयोग करने में सक्षम होना बेहतर होगा। – budderick
क्या आप '--stacktrace' के साथ चल सकते हैं और अधिक त्रुटि प्राप्त कर सकते हैं? – RaGe