NDK and JNI

xiaoxiao2021-02-28  45

1、新建一个Java类,定义一个native方法 public class HelloJni {     public native void printJni();     public static void main(String[] args){     } } 2、将Java类编译成class字节码文件    javac HelloJni.java 3、利用class文件生成本地头文件(最后一个参数为完整的类名,不需要带.java)    javah -classpath E:\ASWorkspace\LoadImage\app\src\main\java com.example.loadimage.HelloJni     4、实现头文件中的方法,编译C/C++代码,生成HelloJni.dll文件,引入到项目中,static{System.loadLibrary("HelloJni");}    或者在系统环境变量中配置dll文件的路径     5、搭建本地开发C/C++代码的环境:Android Studio的Tools->Android->SDK Manager->Android SDk ->SDK Tools,选择NDK(开发C/C++的工具集),Cmake(构建本地库),LLDB(调试本地代码),APPLY后下载这三个工具     6、新建一个支持C/C++的项目,就是在新建工程的时候勾选上Include C++ Support    让现有项目支持C/C++,切换到project视图,打开module名为app的模块,在src/main下右键New->Directory,填写一个文件名cpp    在刚建的cpp路径下,右键New->C/C++ Source File,输入文件名,若要一并生成相应的.h文件,勾选Create an associated header选项即可    在app根目录,右键New->File,输入CMakeLists.txt。注意:文件名必须为CMakeLists.txt    在app根目录,右键选择Link C++ Project with Gradle,然后,找到刚创建的CMakeLists.txt文件。将CMakeLists.txt关联到项目中。注意,Build System仍可以选择ndk-build方式进行编译。    在CMakeLists.txt文件里添加如下代码:    cmake_minimum_required (VERSION 3.4.1)    add_library (hellojni SHARED src/main/cpp/hellojni.cpp)    分别指定CMake要求的版本,add_library中参数分别是,指定生成库的名称,生成库的类型,默认是静态块,即:·a,源码的路径    编译一下工程,在app/build/intermediates/cmake/debug/obj目录下就会生成各种libhellojni.so文件     7、app的build.gradle里面配置 defaultConfig {         ndk {             abiFilters "armeabi", "armeabi-v7a", "x86", "mips"             // abiFilters "armeabi", "armeabi-v7a", "arm64-v8a","x86", "x86_64", "mips", "mips64"         }     } 8、工程的gradle.properties文件里加入    android.useDeprecatedNdk=true  //这句的作用是允许我们使用已经过时的NDK版本,不知道AndroidStudio要求使用哪个版本的NDK才不会报错,总之只要配置了这一句就可以使用比较旧的NDK版本了    
转载请注明原文地址: https://www.6miu.com/read-2612697.html

最新回复(0)