我们有一个在Mac和Windows平台上运行良好的应用程序,现在目标是Android和iOS,该应用程序使用libxml解析XML数据,我的问题是?
1 -- 我需要为Android平台构建libxml还是它已经作为NDK的一部分存在?
如果需要构建,请提供如何开始的任何指针?
我们有一个在Mac和Windows平台上运行良好的应用程序,现在目标是Android和iOS,该应用程序使用libxml解析XML数据,我的问题是?
1 -- 我需要为Android平台构建libxml还是它已经作为NDK的一部分存在?
如果需要构建,请提供如何开始的任何指针?
你有两个选项:
编写一个可以成功构建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将节省您长期的时间。