我正在尝试构建一个FBReader项目http://fbreader.org/FBReaderJ,它具有本机代码依赖项。使用最新的ADT和Android Studio v.5.4我可以使用NDK导入eclipse项目。该项目构建正常,尽管我在运行时遇到异常
java.lang.NoClassDefFoundError: org/geometerplus/fbreader/formats/PluginCollection
at org.geometerplus.fbreader.book.BookCollection.getBookByFile(BookCollection.java:63)
at org.geometerplus.android.fbreader.libraryService.LibraryService$LibraryImplementation.getBookByFile(LibraryService.java:174)
at org.geometerplus.android.fbreader.libraryService.LibraryInterface$Stub.onTransact(LibraryInterface.java:103)
at android.os.Binder.execTransact(Binder.java:367)
at dalvik.system.NativeStart.run(Native Method)
当我尝试使用ant从eclipse构建和运行项目时,一切正常。除了import-build-run之外我什么都没做。清洁,重建,同步工作室不会有帮助。异常指向的类不在任何库模块中,它在主模块中,而是不同的包。
有什么想法?任何帮助非常感谢!
答案 0 :(得分:0)
当然它与NDK构建有关! :)我忽略了Android Studio在导入过程中没有包含.so库。希望很快就会修好。来自JNI and Gradle in Android Studio的答案就行了。
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir 'libs'
}
我将它们包含在源树(lib
文件夹)中,并将本机代码放入jni
文件夹中。另外值得一提的是第一行表示srcDirs = []
我已经有Android.mk文件描述了ndk构建的原生资源,所以这一行阻止Gradle生成它自己。