Android JNI (.so)庫中與android共享第三方 (.so)庫

http://blog.csdn.net/zf135792468/article/details/11213661

1.在project/jni目錄下創建prebuilt子目錄(目錄名可自定義).

2.將第三方.so放到prebuilt中,並創建Android.mk, 內容如下:

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE := xxx

    LOCAL_SRC_FILES := libxxx.so

    include $(PREBUILT_SHARED_LIBRARY)

3.在project/jni/Android.mk中加入

    LOCAL_SHARED_LIBRARIES := xxx

4.在project/jni/android.mk的最後加入

    include $(LOCAL_PATH)/prebuilt/Android.mk

5.運行cygwin, 到project目錄下, 運行$NDK/ndk-build

6.Android工程中使用時,首先加載一下用到的SO庫,即可正常使用了。

System.loadLibrary("XXX");
System.loadLibrary("XXXAgent");

 

你得到一個第三SO庫,名字就叫XXX。你發現裏面的功能正好是你Android項目裏需要的,可以拿來就用。這個消息令你高興萬分啊那是。但是,如何在Android裏使用呢,XXX庫裏的調用約定不符合JNI規定,是不能直接來用的。哈哈,想到了,創建一個XXXAgent.so。它的調用採用JNI,然後在實現裏調用第三方SO就可以了。以上就是大概的思路。

SO文件是如何自動安裝到虛擬機或者手機上呢,NDK生成的SO文件會自動放到libs/armeabi目錄下。而此目錄下的SO文件都會自動打包到APK,安裝後釋放到/data/data/項目名字/lib/下。這裏XXXAgent.SO文件生成libs/armeab,XXXAgent.SO依賴XXX文件,XXX文件自動拷貝到libs/armeab下。(XXX文件放在jni下,和Android.mk同級,這個是和Android.mk裏的設置配合使用的)

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章