我们有一个适用于 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(使用配置脚本和 make),以了解需要构建哪些文件,以及是否需要传递任何特殊标志。
或者,使用 libxml 的配置脚本并使用 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 将节省您的时间。