NDk在As的流程

2.2AS之前:
1. 安装配置NDK
1). 解压NDK的zip包到非中文目录
2). 配置path : 解压后NDK的根目录----->ndk-build


2. 给AS配置关联NDK
1). local.properties中添加配置
     ndk.dir=F\:\\android-ndk32-r13(ndk地址)
2). gradle.properties中添加配置
android.useDeprecatedNdk=true  作用:兼容老版本
        3).在2.2后默认Cmake运行,前两个不要你弄了。

2.2AS版本之后:
         1:首先需要下载NDK,来到设置界面点击下载NDK,安装完NDK,还可以选择配置一些工具。
         2:CMake: 外部构建工具。如果你准备只使用 ndk-build 的话,可以不使用它。(Android Studio2.2默认采用CMake)LLDB: Android Studio上面调试本地代码的工具。
         3:在创建新的project时,界面上多了一个Include C++ Support的选项。
勾选它之后将会创建一个默认的C++与JAVA混编的Demo程序。然后一路 Next,直到 Finish 为止即可。
        



       #NDK开发流程
      1:在java中写native代码
      2:写c代码,生成头文件
      3:配置动态链接库的名称
      4:加载动态链接库
      5:使用



1. 编写native方法:
public class JNI {
    {
        System.loadLibrary("Hello");
    }
    public native String  sayHello();
}



4. 定义对应的JNI
1). 在main下创建jni文件夹
2). 生成native方法对应的JNI函数声明头文件: 命令窗口中, 进入java文件夹
执行命令: javah  com.example.administrator.my.JNI

生成头文件: com_example_administrator.my_JNI.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_administrator_my_JNI */

#ifndef _Included_com_example_administrator_my_JNI
#define _Included_com_example_administrator_my_JNI
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_administrator_my_JNI
 * Method:    sayHello
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_administrator_my_JNI_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif


3). 将生成的头文件转移到jni文件夹下

4). 在jni下定义对应的函数文件: Hello.c

string Java_com_example_administrator_my_JNI_sayHello(JNIEnv* env,jobject jobj){
//jstring     (*NewStringUTF)(JNIEnv*, const char*);
    char* text = "I am from c!!!";
    return  (*env)->NewStringUTF(env,text);
}





5. 指定编译的不同CPU

defaultConfig {

ndk{
    moduleName "Hello" //so文件: lib+moduleName+.so
    abiFilters "armeabi", "armeabi-v7a", "x86" //cpu的类型
}

 }
6. 编译生成不同平台下的动态链接文件
1). 执行rebuild, 生成so文件
2). so文件目录: build\intermediates\ndk\debug\lib\.....
7. 调用native方法:
1). 在native方法所在的类中加载so文件
static {
        System.loadLibrary("Hello");
    }

2). 在Activity中调用native方法:

String result= new JNI().sayHello();
 Log.e(TAG, "onCreate: "+result );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值