如何将本机库(.so文件)导入到Eclipse中?
我下载了Android PDF Viewer源代码,并试图在Eclipse中进行编译。 我的朋友说,我可以从APK提取预编译的.so文件,而不是使用Cygwin和重新编译原生C库。
http://code.google.com/p/apv/downloads/detail?name=apv-0.3.1dev13.apk&can=2&q=
如何将这些libpdfview2.so文件导入到eclipse项目中?
更新:Eclipse提供以下错误,不会运行:
归档所需库:项目“APV”中的“lib / armeabi / libpdfview2.so”不能被读取或不是有效的ZIP文件
看看他们如何设置示例项目: http : //code.google.com/p/apv/source/browse/#hg%2Fpdfview
这个NDK教程在帮助你弄清NDK是如何工作的方面也是有用的: http : //mobile.tutsplus.com/tutorials/android/ndk-tutorial/
基本的是这样的:
-
.so库文件通常位于project_root_dir / libs子文件夹中。 此外,通常它们还在描述其架构的更多子文件夹中(例如,project_root_dir / libs / armeabi / libpdfview2.so)。
-
要在活动中使用该库,请将静态库加载器添加到该活动,如下所示:
静态的
{
的System.loadLibrary( “pdfview2”); //注意缺lesslib前缀
} -
然后定义您正在导入的本地函数。 您可以通过native关键字来识别这些function。 在下面的文件中查看它们在示例中导入的function:
这里有些例子:
private native int parseBytes(byte[] bytes); private native int parseFile(String fileName); private native int parseFileDescriptor(FileDescriptor fd);
如上所述,在Window / Preferences / Android / Build帮助下, 关于此主题的关于此主题的另一个Stack Overflow线程closures了“在build上自动刷新资源和资源文件夹”和“当外部jar包含本机库时强制错误”。 至less这对我的情况有帮助!
不要忘记把这个文件放在'lib s / armeabi'中,让它在运行时可用。
希望这对其他人有帮助,如果Li_W太迟了。