Android NDK开发

一、配置NDK环境

File--Setting--Appearance&Behavior--System Settings--Android SDK--SDK Tools--NDK---OK
右击项目---Open Model Setting---SDK Location--Android NDK location(D:\installTools\sdk\ndk-bundle)
在local.properties里面加入ndk.dir=D\:\\installTools\\SDK\\ndk-bundle
配置ndk系统环境变量:
NDK_ROOT 

D:\installTools\SDK\ndk-bundle

Path
%NDK_ROOT%;


二,编写调用jni的java代码
public class JniKit {

    
    public static native int calculate(int num);


    static {
        System.loadLibrary("JniDemo");
    }


}
三,生成调用本地方法的.h头文件。用AndroidStudio中的Terminal工具来生成。
命令如下:
进入你项目的java文件夹下
cd app/src/main/java
com.lh.jni是你的完整包名,后面跟具体写有调用c代码的java类

javah -jni com.lh.jni.JniKit


四,生成jni文件夹。用于存放.h和.c文件

File--Folder--JNI Folder


五,将步骤6中生成的.h文件移动到jni文件夹下,并创建一个.c文件来写c代码

New--C/C++ Source file


六,写c的测试代码。
include中指向你创建的.h头文件
Java_com_lh_jni_JniKit_calculate;Java_包名类名方法名(参数)
#include <com_android_read_JniKit.h>
JNIEXPORT jint JNICALL Java_com_android_read_JniKit_calculate(JNIEnv *env, jclass cls, jint num) {
    return num * num;
}


七,在as中配置生成so文件的信息。
在build.gradle文件中配置
defaultConfig {
        applicationId "com.android.read.usb"
        minSdkVersion 25
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        ndk{
            moduleName "jniDemo"       //生成的so名字
            cFlags "-DANDROID_NDK -D_RELEASE"
            ldLibs "m","log","jnigraphics"// LOCAL LDLIB
            abiFilters "armeabi-v7a","armeabi","x86"//输出指定三种abi体系结构下的so库
            stl "stlport_shared"//app stl
        }
    }


八、Build--Make Project生成so文件,然后运行项目。
(1)生成的文件在build--intermediates--ndk--debug--lib目录下
(2)在src目录新建个jniLibs的目录

(3)把lib目录下的所有目录及文件copy到新建的jniLibs的目录下


九,拿出项目so文件,供其它项目使用。
在build.gradle文件中配置
sourceSets {
        main {
            jni.srcDirs = ['src/main/jni', 'src/main/jni/']
            jniLibs.srcDirs 'src/main/libs'//路径为so文件的路径
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值