当前位置: 代码迷 >> Android >> android.mk文件中引用第三方jar跟so文件的方法
  详细解决方案

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

热度:21   发布时间:2016-04-28 07:17:04.0
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吧,呵呵。

  相关解决方案