(原)Eclipse中將JNI生成的so打包成jar的步驟


說明:新人,對java不熟,見諒。

 

1. 新建工程,添加好native support,寫好對應的文件(包括cpp文件,so文件和對應的java文件,此處稱對應的java文件為SoJAR.java,)。

2. 右鍵單擊該SoJAR.java文件,選擇Export,選擇java中的JAR file。

之后設置好路徑,一路finish。便可生成對應的jar文件。

3. 將生成的SoJAR.jar文件放到新的工程的libs目錄下(老版本的可能步驟比較復雜,我用的Eclipse 23,不需要別的設置,直接放進去就行了),將libSoJAR.so文件放到libs\armeabi目錄下(或者對應的目錄下)。

4. 正常編寫代碼。

Sojar.somecode();

  

問題:遇到的一個問題是,如果使用原來的so的話,需要2s;使用jar包的話,需要8s。暫時不是很清楚速度為何差距這么大(里面有很多new和delete以及循環)。

1411061030更新:換了一個簡單的測試程序,就是兩個400*400的矩陣相乘。使用so用時1460ms,使用jar的包1495ms。暫時不清楚為什么這次時間差距沒有這么大。

1411061411更新:速度問題已經解決,由於so的包的問題。原來的so包使用application.mk生成了armeabi armeabi-v7a mips x86四種so的庫,新的jar包只使用了armeabi的包,因而速度變成了8s。刪除該文件夾,復制armeabi-v7a文件夾后,速度變成了2s(ps,現在的程序依舊無法使用,因為太慢了)。不過使用mips x86這兩個so的庫的話,程序直接崩潰了。所以選擇合適的so庫還是很有必要的。

 

 

主要參考:

http://stackoverflow.com/questions/24773153/the-library-javacv-android-arm-jar-contains-native-libraries-that-will-not-run

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM