1.下载安装Android NDK
地址: https://dl.google.com/android/ndk/android-ndk-r10d-windows-x86_64.exe
2.下载安装cygwin
地址:https://cygwin.com/install.html
查看cygwin的安装是否成功:
在弹出的命令行窗口输入:make –version
打印出版本信息和一些描述信息,则cygwin安装成功!
3.配置 NDK 环境变量
找到 cygwin 的安装目录,将F:\Cygwin\home\Administrator文件夹下的.bash_profile文件删除,
再将F:\Cygwin \etc\skel文件夹下的.bash_profile文件copy到F:\Cygwin\home\Administrator文件夹下;
最后在.bash_profile文件中添加NDK路径
NDK=F:\adt-bundle-windows-x86_64-20140702\adt-bundle-windows-x86_64-20140702\ndk\android-ndk-r10d
export NDK
打开 cygwin ,输入 cd $NDK ,验证刚刚配置的NDK信息是否正确。4.eclipse 版本为Google官方下载的集成ADT ( adt-bundle-windows-x86_64-20140702.zip)
5.添加C++代码
项目右键—>Android Tools—Add Native Support...点击Finish
此时项目中会增加jni和obj两个文件夹
jni中有xx.cpp 和Android.mk文件 需手动添加名称为Application.mk文件
并在文件中添加APP_ABI := all APP_PLATFORM := android-14 (android:minSdkVersion="14")
(不添加生成的.so库无法加载,不知道其他人的是怎么解决的,不添加APP_PLATFORM节点打包会抛出版本异常)
xx.cpp文件中的方法需这样写: extern "C" { 你的代码}
例如:test.cpp
<span style="font-size:18px;"><span style="font-size:18px;">#include <jni.h>
#include <string.h>
#include <stdio.h>
extern "C" {
jstring//返回值类型
Java_com_sg_JNIT_toString(JNIEnv* env, jobject object, jstring source) {
//Java 首字母要大写
//com.sg为项目包名
//JNIT为加载本地.so库的java类
//toString 方法名,JNIT中对应的方法名
//source 传参
return source;
}
jstring Java_com_sg_JNIT_doString(JNIEnv* env, jobject object, jstring source) {
return source;
}}</span></span>
JNIT.java
<span style="font-size:18px;"><span style="font-size:18px;">public class JNIT {
static {
System.loadLibrary("test");//编译出来的.so包为libtest.so
}
public native String toString(String source);
public native String doString(String source);
public native String onlineIP();
public native String codeIP();
public native String testIP();
}</span></span>
另外下载的NDK目录下有很多sample可供参考
6.用 Cygwin编译so库
运行 cygwin :
输入命令 cd /cygdrive/项目根路径
输入命令 $NDK/ndk-build 即可发现libs包下的.so库
另若eclipse里面集成的有NDK,点击这个小锤子也可生成.so库: