android 集成第三方静态库的编译方法
最近在集成第三方静态库,在网上搜索了好多资料,试过好多次,出现过各种问题。下面是走过的一些历程,记录下来,以便后面参考。
在这个案子中,我是用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)文件。