1.配置好NDk編譯環(huán)境(這個Google一下,:)) 2.將已有C/C++代碼,,編譯成SO文件 3.Eclipse中新建Android工程,,創(chuàng)建一個jni目錄。如下所示 4.在jni目錄創(chuàng)建C/C++文件,,里面調用步驟2函數,,或者第三方SO的函數 5.創(chuàng)建Android.mk文件,內容為: LOCAL_PATH := $(call my-dir) 將XXX替換為編譯出的SO或者第三方SO的名字 6.將jni目錄下的C/C++編譯成Android通過JNI調用的SO文件,,這里名字為 libXXXAgent.so 7.Android工程中使用時,,首先加載一下用到的SO庫,即可正常使用了,。 System.loadLibrary('XXX'); 說明:這里的重點是如何調用第三方SO庫,,所有部分細節(jié)沒有表述。比如Javah生成相關頭文件,,jni調用等,。 補充:上面步驟可能比較多,這里舉一個例子加以說明,。某天,,你得到一個第三SO庫,名字就叫XXX,。你發(fā)現里面的功能正好是你Android項目里需要的,,可以拿來就用。這個消息令你高興萬分啊那是,。但是,,如何在Android里使用呢,XXX庫里的調用約定不符合JNI規(guī)定,是不能直接來用的,。哈哈,想到了,,創(chuàng)建一個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里的設置配合使用的) |
|