AS内开发NDK

1:已有NDK工程建议还是按照之前使用的ndk-build编译

2:新的NDK开发

2.1 工具准备

as+ndk+cmake+lldb

AS内开发NDK_第1张图片

2.2 添加配置

local.properties内添加ndk及sdk目录


app的build.gradle内 android.defaultconfig下添加

ndk{

moduleName = "my-jni"

abiFilters "armeabi", "armeabi-v7a", "x86"

}

gradle.properties 内添加  

android.useDeprecatedNdk=true  


2.3添加 native 函数声明

例如:


	public class MyJNI {
    		static {
        		System.loadLibrary("my-jni");
    		}
    		public native void sayHello();
	}
     2.4 根据函数声明生成头文件
	在声明native函数的目录下运行javah
	例如:
    	D:\AndroidStudioProjects\JNITest\app\src\main\java>javah com.example.administrator.jnitest.MyJNI
    2.5 C实现
	在main文件夹下创建jni目录并将2.4产生的.h移至该目录下,并添加.h的实现
    2.6 编译
	build->	clean project,   build->rebuild project 
	在 app\build\intermediates\ndk\debug\lib 目录就可看到按平台区分.so
总结:
	因为安装as时方法不一样可能会导致没有 cmake, lldb 等,这导致编译正常但是无法生成.so
	不用手工添加makefile
	Set "$USE_DEPRECATED_NDK=true" in gradle.properties to continue using the current NDK integration.错误解决是在

gradle.properties 内添加  android.useDeprecatedNdk=true ,如继续报此错误应该clean project 后rebuild

得运行命令生成.h,不说说按alt+enter能自动生成的嘛·咋不行呢···



你可能感兴趣的:(Android)