使用libxml来开发Android应用程序

5

我们有一个在Mac和Windows平台上运行良好的应用程序,现在目标是Android和iOS,该应用程序使用libxml解析XML数据,我的问题是?

1 -- 我需要为Android平台构建libxml还是它已经作为NDK的一部分存在?

如果需要构建,请提供如何开始的任何指针?


这不是NDK的一部分。关于指针如何启动 - 请从NDK自述文件开始,然后转到Java的JNI文档。 - Seva Alekseyev
谢谢您的评论,实际上我已经了解了NDK环境,我想知道的是,在OSX平台上,如何为Android编译libxml,一些交叉编译过程来为Android平台编译libxml。 - Amitg2k12
1个回答

12

你有两个选项:

编写一个可以成功构建libxml的Android.mk文件,并在主要的Android.mk文件中依赖其结果。你可以尝试在Mac上本地构建libxml(使用configure脚本和make),了解需要构建哪些文件,以及是否需要传递任何特殊的标志。

或者,使用libxml的configure脚本,并使用NDK的工具链为Android构建libxml。你需要像这样做:

NDK_ROOT=/path/to/ndk
API_LEVEL=YOUR_API_LEVEL
SYSROOT=$NDK_ROOT/platforms/android-$API_LEVEL/arch-arm

export CC="$NDK_ROOT/toolchains/arm-linux-androideabi-4.4.3/Darwin-x86/bin/arm-linux-androideabi-gcc"
export CFLAGS="--sysroot=$SYSROOT"
export LDFLAGS="--sysroot=$SYSROOT"

./configure --host=arm-linux-gnueabi --enable-static --disable-shared
make libxml2.la

技术上,Android的主机三元组是arm-linux-androideabi,但大多数配置脚本不识别它。对于我们这里的目的来说,-gnueabi就足够了。

我最终建议使用make libxml2.la而不是只用make,因为测试没有正确构建。生成的库将放在.libs/文件夹中。

第二种方法可能更简单,但如果您打算为多个架构(arm、armv7-a,甚至x86和mips)构建应用程序,则编写自己的Android.mk将节省您长期的时间。


@keinos:谢谢,我会尝试并告诉你结果。 - Amitg2k12
2
嘿,测试无法构建,因为缺少glob文件。请查看此线程https://groups.google.com/forum/#!topic/android-ndk/vSH6MWPD0Vk - Stephan
对我来说不够清晰... libxml2是Android的“标准”吗?还是有另一个“Java世界”的XML解析器...或者,默认情况下,常规Android没有XML解析器? - Peter Krauss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接