我下载了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文件
答案 0 :(得分:21)
了解他们如何在示例项目中进行设置: 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”); //注意缺少lib前缀
}
然后定义要导入的本机函数。由于native关键字,您可以识别这些功能。查看下面的文件,了解它们在示例中导入的函数:
以下是一些例子:
private native int parseBytes(byte[] bytes);
private native int parseFile(String fileName);
private native int parseFileDescriptor(FileDescriptor fd);
答案 1 :(得分:5)
正如所提到的another Stack Overflow thread about this topic关闭“在构建时自动刷新资源和资产文件夹”和“在外部jar包含本机库时强制错误”在Window / Preferences / Android / Build下有帮助。至少它在我的情况下有所帮助!
不要忘记将so-file放在'lib s / armeabi'中,以便在运行时使用它。
希望这对其他人有所帮助,如果对Li_W来说太晚了。