最近的一個Android項目,由於跟C語言打上了交道,需要調用第三方的.so文件。關於.so 、JNI這些東西其實我還基本屬於那種不熟悉甚至連了解都算不上的水平。這次我是在別人的項目上添加新功能,也就是在別人已經有armeabi、jni等這些文件夾的情況下,我再添加些.so(百度地圖的libBaiduMapSDK_v3_0_0.so和liblocSDK4b.so)。上一個項目中也用過百度地圖,我就按着百度給的開發指南做的,把這些.so文件和需要的.jar直接複製進libs和其目錄下,然後就成功了。這次也是這麼做,但一 run as 項目,發現拷貝進去的.so文件都被自動刪除了,於是開始在網上搜羅信息,按照指示,果然發現了這個項目中還有jni這個文件夾,裏面還有包括android.mk在內的好些文件,跟我以前自己做的項目,構成不太一樣。搞了一整天,終於在這裏發現瞭解決的辦法
點擊打開鏈接。起初還是出了些差錯,原因是lib前綴的有無造成的。
1、在新建目錄jni/prebuilt,添加so包
2、在原來的jni/Android.mk添加
LOCAL_PATH
:= $(call my-dir)
02.
03.
include
$(CLEAR_VARS) 《---在這個後面田間
04.
05.
06.
include
$(CLEAR_VARS)
07.
LOCAL_MODULE
:= mppay
08.
LOCAL_SRC_FILES
:= prebuilt/libmppay.so
09.
include
$(PREBUILT_SHARED_LIBRARY)
10.
11.
include
$(CLEAR_VARS)
12.
LOCAL_MODULE
:= entryex
13.
LOCAL_SRC_FILES
:= prebuilt/libentryex.so
14.
include
$(PREBUILT_SHARED_LIBRARY)
注意:這裏prebuilt/ 之後的文件名是帶lib的,起初我沒有帶,結果還是錯的。