我正嘗試將本機預構建共享庫添加到我在Android Studio中的項目中。我正在使用gradle-experimental:0.6.0-alpha5。然而,每當我試圖預先構建的共享庫添加到我的應用程序模型,我得到以下錯誤:Android Studio中帶有實驗性Gradle插件的本地預構建共享庫
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"
}
}
}
}
然而,這並不正常工作。 Android Studio不會將我的shared_lib複製到apk文件。因此,我總是得到以下錯誤:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader [...] couldn't find "shared_lib.so"
誰能告訴我怎麼可以包括本地預生成庫到我的項目?我正在使用buildToolsVersion = '22 .0.1'和compileSdkVersion = 22作爲構建參數。
你可能會嘗試用硬編碼路徑.so代替'$ {targetPlatform.getName()}'嗎? – RaGe
是的,我已經試過了。如果我將路徑更改爲不存在的文件,Gradle肯定能夠解析路徑,因爲我得到一個錯誤。如果有解決我的問題,我仍然會很高興。但是,我暫時通過不再使用預建的庫來解決我的問題。我用'cppFlags.add(「 - I $ {file(」./../../../ projects/test/include「)}」。toString())'和cpp使用'srcDirs + =「./../../../ projects/test/src /」'到jni的文件。但是能夠使用預建的庫仍然會更好。 – budderick
你可以用'--stacktrace'運行並獲取更多的錯誤嗎? – RaGe