NDK and JNI

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版本了
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值