Android Studio 编译C++/C文件,生成so文件及错误信息详解

Android Studio 编译C++/C文件,生成so文件

一、Android studio的NDK下载:

Android Studio 编译C++/C文件,生成so文件及错误信息详解

二. 创建Android 工程

Android Studio 编译C++/C文件,生成so文件及错误信息详解

Android Studio 编译C++/C文件,生成so文件及错误信息详解

三.创建NativeJNI.java文件

该文件和MainActivity.java在同一路径·

public class NativeJNI {
static {
    System.loadLibrary("main");
}
public static native String helloJNI();

}

四.通过Build----->Make Project生成class文件:

Android Studio 编译C++/C文件,生成so文件及错误信息详解

五.Terminal输入命令行生成.h文件

Android Studio 编译C++/C文件,生成so文件及错误信息详解
1.执行命令javah -d jni -classpath E:\AndroidProjectTest\NdkDemo\app\build\intermediates\javac\debug\com
pileDebugJavaWithJavac\classes com.ndkdemo.NativeJNI
没有报错就是执行成功。

Android Studio 编译C++/C文件,生成so文件及错误信息详解
2.执行成功后在上图目录中会生成com_ndkdemo_NativeJNI.h文件。
将该目录和文件拷贝到main目录下,如下图:
Android Studio 编译C++/C文件,生成so文件及错误信息详解
3.将com_ndkdemo_NativeJNI.h重命名为main.c,并编写main.c中的代码,实现native方法:

JNIEXPORT jstring JNICALL Java_com_ndkdemo_NativeJNI_helloJNI
 (JNIEnv *env, jclass thiz)
 {
   	return (*env)->NewStringUTF(env, "Hello Main!");
 }

4、再执行Build------>Make Project

六.配置工程信息

6.1 build.gradle

添加如下图红色部分配置:
Android Studio 编译C++/C文件,生成so文件及错误信息详解

6.2. CMakeLists.txt

#将自己生成的C++文件添加进来

add_library(
             main
             SHARED
             src/main/jni/main.c)

6.3 gradle.properties

Android Studio 编译C++/C文件,生成so文件及错误信息详解

七. Build—>ReBuild工程后,则可以生成NativeJNI的so文件

八.错误信息

Android Studio 编译C++/C文件,生成so文件及错误信息详解
rebuild报上图的错,是因为ndk版本太新,换个旧版本就ok了。如下图:
Android Studio 编译C++/C文件,生成so文件及错误信息详解