当前环境:
android studio 2.1.1
android-ndk-r10b
在下列文件目录下,右键 新建folder –jni folder
package project.vvizware.com.androidmkdemo;
public class Jni {
static {
System.loadLibrary("hello");
}
public native int getInt();
}
利用as的命令行生成.h文件,并将该文件剪切到jni文件下。
新建hello.cpp来实现.h
#include "project_vvizware_com_androidmkdemo_Jni.h"
JNIEXPORT jint JNICALL Java_project_vvizware_com_androidmkdemo_Jni_getInt
(JNIEnv *, jobject){
return 3;
}
由于as在jni目录下只有一个.c/.cpp文件时,会有bug(这个问题好像在ndk12上面不会出现)
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.cpp
include $(BUILD_SHARED_LIBRARY)
LOCAL_MODULE:=hello 表示的是要生成的库是hello
LOCAL_SRC_FILES :=hello.cpp 表示的是 以这个为源
整体来说就是以hello.cpp来生成hell.so
Application.mk
APP_ABI:=all
表示支持所有的abi版本,会生成所有版本的so文件 x86等
Android Studio 和Eclipse在ndk的差别在于,Eclipse会自己去加载相关的.mk文件,而在Android studio 上面是在gradle里面进行配置,在gradle里面可以直接
ndk{
moduleName "test"
abiFilter "x86"
}
....
resourceSets...
写上这些之后,as就会给你自动生成.mk的文件
如果想要在android studio 中使用Android.mk来直接进行ndk等的设置,需要在gradle 作出设置。
下面是完整的app gradle的设置:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "project.vvizware.com.androidmkdemo"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets.main{
jni.srcDirs=[]//禁用as自动生成mk
}
task ndkBuild(type:Exec,description:'Compile JNI source via NDK'){
commandLine "E:\\android-ndk-r10b\\ndk-build.cmd",//配置ndk的路径
'NDK_PROJECT_PATH=build/intermediates/ndk',//ndk默认的生成so的文件
'NDK_LIBS_OUT=src/main/jniLibs',//配置的我们想要生成的so文件所在的位置
'APP_BUILD_SCRIPT=src/main/jni/Android.mk',//指定项目以这个mk的方式
'NDK_APPLOCATION_MK=src/main/jni/Application.mk'//指定项目以这个mk的方式
}
tasks.withType(JavaCompile){//使用ndkBuild
compileTask ->compileTask.dependsOn ndkBuild
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}
注意:
当前的android studio 并没有将ndk配置进行 ,没有在Project-structure里面配置ndk的路径
这里在defaultConfig 里面也没有配置ndk
和ndk相关的一切,路径等都在gradle里面另外做配置
demo下载地址:
http://download.csdn.net/detail/u012391876/9597675