最近在集成第三方靜態庫,在網上搜索了好多資料,試過好多次,出現過各種問題。下面是走過的一些歷程,記錄下來,以便后面參考。
在這個案子中,我是用NDK來生成so。
下面是要用到得cygwin的安裝和配置:
1、下載cygwin安裝包。
2、點擊安裝,在Select Packages界面,安裝Devel分支下的所有安裝包。同時也搜索下VIM,安裝VIM。選中后就等待下載和安裝完成。
3、安裝完成后,要進行一些環境變量的配置:
將cygwin安裝目錄下的bin設置到系統的path路徑。點擊 Cygwin.bat 啟動cygwin,出現bash shell dos 窗口,分別執行命令 make -v,gcc -v沒有報錯,出現對應的版本顯示,就表示安裝成功了.為了編譯方便,編輯一下 cygwin.bat 文件,設置環境變量,我的文件編輯如下,供參考:
@echo off
f:
chdir f:/develop/cygwin_a/bin
set HOME=/cygdrive/f/cygwin/home/
set NDK=/cygdrive/f/Android/Android_SDK/android-ndk
bash --login -i
也可點擊桌面的Cygwin Terminal,執行
vim .bash_profile
在文件末尾加上
NDK=/cygdrive/f/Android/Android_SDK/android-ndk
exprot NDK
4、驗證安裝是否成功
啟動cygwin,進入命令窗口,切換目錄到android NDK (cd $NDK)安裝目錄samples/hello-jni目錄,執行$NDK/ndk-build clean,隨后執行 $NDK/ndk-build,這個時候看到清除了原來的文件,重新編譯生成了 libhello-jni.so,即大功告成.
5、cygwin用到的命令
cd $NDK
ls
ndk-build
ndk-build clean
下面是配置NDK環境:
1、下載 android-ndk-r7b-windows, 找度娘要了這個包。解壓到F盤中。
2、將ndk
為靜態庫(.a)創建jni接口:
1、必備文件:靜態庫libtest.a、靜態庫libtest.a的頭文件libtest.h,將這兩個文件放在Android工程的jni目錄下。
2、增加jni.java, 內容如下,刷新Android工程,在bin目錄下生產jni.class。
package com.lgq.test; public class jni { static { System.loadLibrary("test"); } public static final native int getVersion(); public static final native int doUpdate(String path); public static final native int doCalibration(); }
3、打開cygwin, 進入Android工程目錄bin文件夾下, 執行
javah -classpath . -jni com.lgq.test.jni
最近在集成第三方靜態庫(.a),下面是一些參考:
android 集成第三方靜態庫的編譯方法
http://blog.csdn.net/lizhiguo0532/article/details/7219349
Android中編譯及使用靜態庫
http://fanwei51880.blog.163.com/blog/static/3240674020111140737614/
這里采用的方式是Java調用動態庫(.so)文件,動態庫再調用靜態庫(.a)文件。
