Tôi đang cố gắng thêm thư viện được chia sẻ sẵn dựng sẵn vào dự án của tôi trong Android Studio. Tôi đang sử dụng thử nghiệm lớp học : 0.6.0-alpha5. Tuy nhiên, bất cứ khi nào tôi cố gắng thêm các thư viện chia sẻ được xây dựng sẵn để mô hình ứng dụng của tôi, tôi nhận được lỗi sau:Thư viện được chia sẻ sẵn dựng sẵn trong Android Studio với plugin Gradle thử nghiệm
Error:Cause: org.gradle.api.internal.PolymorphicDomainObjectContainerConfigureDelegate
Thư viện được thêm vào mô hình ứng dụng như thế nào nó được mô tả bởi các 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"
}
}
}
}
Dòng quan trọng là thư viện "shared_lib". Không có lỗi nếu tôi bỏ ghi chú dòng này.
Vì tính năng này không hoạt động, tôi cũng đã cố gắng sử dụng hướng dẫn từ ph0b.com. Họ đang sử dụng một cú pháp khác nhau để thêm các thư viện chia sẻ nguồn gốc (tôi chỉ bỏ qua các tiêu đề vì tôi không có một thư mục duy nhất bao gồm tất cả tiêu đề):
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"
}
}
}
}
Tuy nhiên, điều này không làm việc tốt. Android Studio không sao chép shared_lib của tôi vào tệp APK. Do đó, tôi luôn nhận được lỗi sau:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader [...] couldn't find "shared_lib.so"
Bất cứ ai có thể cho tôi biết cách tôi có thể đưa thư viện prebuild gốc vào dự án của mình? Tôi đang sử dụng các tham số xây dựng buildToolsVersion = '22 .0.1 ' và compileSdkVersion = 22.
bạn có thể thử với đường dẫn được mã hóa cứng tới .so thay vì '$ {targetPlatform.getName()}'? – RaGe
Vâng, tôi đã thử điều đó rồi. Gradle chắc chắn có thể giải quyết đường dẫn kể từ khi tôi nhận được một lỗi nếu tôi thay đổi đường dẫn đến một tập tin không tồn tại. Tôi vẫn sẽ vui mừng nếu có một giải pháp cho vấn đề của tôi. Tuy nhiên, tôi tạm thời giải quyết vấn đề của mình bằng cách không sử dụng các thư viện dựng sẵn nữa. Tôi đã thêm tất cả các tệp tiêu đề cần thiết của mình với 'cppFlags.add (" - I $ {tệp ("./../../../ projects/test/include")} ". ToString())' và cpp các tệp có 'srcDirs + =" ./../../../ projects/test/src/"' thành jni. Nhưng nó vẫn sẽ tốt hơn để có thể sử dụng các thư viện dựng sẵn. – budderick
bạn có thể chạy với '--stacktrace' và lấy thêm lỗi không? – RaGe