11/22
2013

Android应用随系统编译makefile中如何添加so库

主要介绍某个项目跟随系统一起编译如何通过makefile添加so库

 

帮另外一个项目救火,需要用到百度定位的sdk,一个依赖的jar包,一个需要放到armeabi中的liblocSDK4.so库,百度lbs后台中创建访问密钥后设置里面可以不设置安全码,感谢@左啊提醒。
用eclipse debug或者eclipse签名导出APK都能正常定位,但跟随系统一起编译,则BDLocationListener的

public void onReceiveLocation(BDLocation location)

函数参数location.getLocType()始终为162,和百度的技术支持了解后知道162表示so库加载失败,之后就排查liblocSDK4.so为何加载失败。

 

stackoverflow之,在Android.mk中添加

PRODUCT_COPY_FILES += $(LOCAL_PATH)/libs/armeabi/liblocSDK4.so:system/lib/liblocSDK4.so

表示将so库拷贝到系统的system/lib下面,makefile中该部分整体配置如下:

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 \
                               baidu-loc-sdk-v4

include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
PRODUCT_COPY_FILES += $(LOCAL_PATH)/libs/armeabi/liblocSDK4.so:system/lib/liblocSDK4.so
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += baidu-loc-sdk-v4:libs/baidu-loc-sdk-v4.jar
include $(BUILD_MULTI_PREBUILT)

不过要使的PRODUCT_COPY_FILES生效,需要系统整体编译才可,mm单独编译该项目是无法生效的,可通过系统完整编译升级后在system/lib下查找是否存在liblocSDK4.so判断so库是否编译正确。

至于eclipse为什么放到libs的armeabi下面就能直接生效是因为这些工作adt都已经帮你完成了。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

2 thoughts on “Android应用随系统编译makefile中如何添加so库