Android studio使用NDK(Mac版)

1、配置项目NDK的路径

在项目Project Structure中设置 Android NDK Location

2、创建类

在项目里src/main/java中创建类 NDKTest.java

3、native

在此类里创建一个native方法,用来获取一个字符串

  
  
  1. public class NDKTest {
  2. public static native String getString();
  3. }

4、创建文件夹JNI

在src/main下创建文件夹jni,用来存放C/C++文件等

5、生成方法

在android studio 的Terminal中,
先到src/main/java路径下 输入: cd /src/main/java
再生成.h文件 输入:javah -jni com.wj.change.NDKTest
最后会生成文件 com_wj_change_NDKTest.h
里面会自动生成一个方法名:
    
    
  1. /*
  2. * Class: com_wj_change_NDKTest
  3. * Method: getString
  4. * Signature: ()Ljava/lang/String;
  5. */
  6. JNIEXPORT jstring JNICALL Java_com_wj_change_NDKTest_getString
  7. (JNIEnv *, jclass);

6、创建C++文件

创建C/C++文件 com_wj_change_NDKTest.cpp
备注:文件名不必保持一致,但保持一致能更直观,便于理解等
输入代码:
   
   
  1. #include "com_wj_change_NDKTest.h"
  2. JNIEXPORT jstring JNICALL Java_com_wj_change_NDKTest_getString (JNIEnv *env, jclass jls)
  3. {
  4. return (*env).NewStringUTF("23333333333");
  5. }
备注:方法名可以抄.h文件中的方法名。此方法能获取到一段字符串,即 23333333333

7、创建Android.mk文件

在jni文件夹下,创建文件 Android.mk,内容为:
   
   
  1. LOCAL_PATH :=$(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_MODULE :=A
  4. LOCAL_SRC_FILES=com_wj_change_NDKTest.cpp
  5. include $(BUILD_SHARED_LIBRARY)
备注:
LOCAL_MODULE为库的名称----A
LOCAL_SRC_FILES为想要编译的文件

8、创建文件Application.mk

在jni文件夹下,创建文件Application.mk,内容为:
   
   
  1. APP_MODULES := A
  2. APP_ABI := all
备注:
APP_MODULES 要和Android中的 LOCAL_MODULE保持一致 都是A

9、添加配置

在app/build.gradle中,defaultConfig内添加:
   
   
  1. ndk {
  2. moduleName "A"
  3. }
  4. sourceSets.main {
  5. jni.srcDirs = []
  6. jniLibs.srcDir "src/main/libs"
  7. }
备注:
moduleName--仍然和前面保持一致
jniLibs . srcDir "src/main/libs" ---jni文件所在位置

10、设置使用

在项目 gradle/wrapper/gradle-wrapper.properties文件的最后一行添加:
   
   
  1. android.useDeprecatedNdk=true
备注:注意检查SDK和NDK路径。

11、build project

12、在Terminal中

先回溯到main文件夹下 输入:cd ..
然后build出.so文件 输入:ndk-build
最后可以看到再libs下会生成七种.so文件~

*******************************************华丽丽分割线*****************************************

下面说一下如何使用:
1、在NDKTest.java中引用库文件
   
   
  1. public class NDKTest {
  2. static{
  3. System.loadLibrary("A");
  4. }
  5. public static native String getString();
  6. }
2、在MainActivity中,使用,
   
   
  1. ((TextView)findViewById(R.id.tv)).setText(NDKTest.getString());
3、运行到手机之后,会看到界面中文本展示:23333333333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摩羯座程序媛

打赏的老板越来越富

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值