android.mk文件中引用第三方jar和so文件的方法

    今天是儿童节,本来应该为小朋友们高高兴兴地过一天,但今天确实过得有点郁闷,因为我发了一天才解决了这个恶心的问题。问题是我在开发百度地图相关的应 用,因为工程中要引用百度API的JAR文件和SO文件,而我的工程又必须在LINUX命令行环境下编译,因此需要为项目编写一个MK文件来进行编译。

    这个问题属性引用第三方库的问题,引用JAR文件的方法是先定义LOCAL_STATIC_JAVA_LIBRARIES

LOCAL_STATIC_JAVA_LIBRARIES := baidumap \
http://hi.baidu.com/cmdmac/item/43b8e0348b1c91f1e7bb7aa4

这是JAR文件库的别名,我这里用了两个别名,一个baidumap,一个是googlemap.别名是可以随便可以写的。

然后再定义LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES,

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:libs/armeabi/baidumapapi.jar\
                                        googlemap:libs/armeabi/maps.jar

这个变量是相应库对应的jar文件的路径,格式是 别名:JAR路径

  引用第三方SO文件,在 eclipse工程里编译的时候,如果把so文件放在libs/armeabi/下的话,adt会直接给你自动把SO文件把包进去 。而在命令行下进行的话应该定义LOCAL_JNI_SHARED_LIBRARIES,

LOCAL_JNI_SHARED_LIBRARIES := libBMapApiEngine     

这样还不行,这样直接编译会引发错误:找不到out/target/product/***/obj/lib/******.so

这时你需要把你的so文件放到out/target/product/***/obj/lib目录下。

这样再编译就没问题了。

    另外在MK中文件中include $(BUILD_PACKAGE)是要编译这个工程,不加这个不会编译,MK文件具体写法请GOOGLE吧,呵呵。

相关推荐