Json是一个轻量级的数据交换格式,在许多地方被经常用到。在开发android程序时有时候跟服务器通讯,也需要用到json解析。
如果在android SDK环境下,则自带了org.json库,不需要再自行编译。如果在NDK环境下,本人没有找到系统自带的(压根没去找。。),故而决定使用json cpp。在将json cpp集成进去时,发觉网上没有相关的文章,就顺手写写,希望能帮到有需要的人。
JsonCpp是一个开源的Cpp用的json库,下载地址:
http://sourceforge.net/projects/jsoncpp/files/jsoncpp/0.6.0-rc2/
注意下载jsoncpp-src-0.6.0-rc2-amalgamation.tar.gz,这个版本将.h和.cpp合并在一起,而且不需要再configure。(它的make系统我觉得很奇怪。。)
下载完毕后解压缩,放到$project/jni下($project是项目根目录,下同)。
为了避免以后重复编译JsonCpp,所以决定把它编成动态库,独立出来。顺便建立一个测试程序main,放在test下边。路径具体如下:
tree $project/jni/
Android.mk
Application.mk
jsoncpp
-------Android.mkjsonjsoncpp.cpp
test
-------Android.mkmain.cpp
(mac没有tree命令,将就下)
1、JsonCpp用到了stl的exception,所以如果你在android的编译系统的Application文件中指定STL库路径时,如果使用:APP_STL := stlport_static,那么就无法通过编译。需要改成:APP_STL := gnustl_static
jni/Application.mk
# it is needed for ndk-r5
#APP_STL := stlport_static
APP_STL := gnustl_static
APP_MODULES := jsoncpp main
<