Android NDK开发

来源:互联网 发布:中国钓鱼运动协会数据 编辑:程序博客网 时间:2024/06/03 20:52
  • 安装ndk并测试

官网下载ndk,ndk向后兼容,并非版本越新越好,低版本兼容高版本。

  • 配置环境变量

ANDROID_NDK_HOME 值为ndk安装目录
如:
D:\android-ndk-r14b-windows-x86_64\android-ndk-r14b

  • gradle中ndk配置
android{ndk {            moduleName "module_count"            ldLibs "log", "z", "m"            abiFilters "armeabi", "armeabi-v7a", "x86"        }}
  • local.gradle配置添加ndk路径
ndk.dir=D\:\\android-ndk-r14b-windows-x86_64\\android-ndk-r14b
  • 修改gradle.proties
android.useDeprecatedNdk=true
  • 使用native关键字声明java方法

test.lucky.ndktest.MainActivity 代码片段

public static native  method();static{System.loadLibrary('libiaryName.so');}
  • 生成头文件

在terminal控制台,切换到test同级目录

javah -jni   test.lucky.ndktest.MainActivity
  • 实现native方法
    main下创建jni文件夹,写c文件,参考生成的头文件,实现native方法

  • 生成so文件

    • 方式一 :make–>project
      在app/build/intermediates/ndk/debug/lib生成so文件,拷贝全部so文件到libs下

    • 方式二 :ndk-build
      若使用ndk-build命令生成so文件,需要手动编写android.mk和application.mk文件,这里给出的是使用第一种方式自动生成的代码。
      application.mk主要指定module名称,c 文件路径,头文件路径等。

 LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := module_countLOCAL_LDFLAGS := -Wl,--build-idLOCAL_LDLIBS := \    -llog \    -lz \    -lm \LOCAL_SRC_FILES := \    G:\AndroidSource\WcAutoReply-master\WcAutoReply-master\NdkTask\app\src\main\jni\testC \LOCAL_C_INCLUDES += G:\AndroidSource\WcAutoReply-master\WcAutoReply-master\NdkTask\app\src\main\jniLOCAL_C_INCLUDES += G:\AndroidSource\WcAutoReply-master\WcAutoReply-master\NdkTask\app\src\debug\jniinclude $(BUILD_SHARED_LIBRARY)

applcation.mk

APP_ABI := armeabi armeabi-v7a
原创粉丝点击