美文网首页
Android使用ndk-build构建工具开发NDK的简单de

Android使用ndk-build构建工具开发NDK的简单de

作者: townof1997 | 来源:发表于2019-05-08 19:43 被阅读0次

    1,AS的开发工具及NDK插件包已经下载完成,并把ndk-bundle配置到环境变量中;
    2,新建Android Project,不要勾选Include C++ support和Include Kotlin support
    3,在MainActivity同级别下创建class文件Java2CJNI,代码如下:

    public class Java2CJNI {
        static {
            System.loadLibrary("Java2C");
        }
        public native String java2C();
    }
    
    如图所示: jni_class.png

    4,在main文件夹下(也就是和java,res同级别的目录)新建jni文件
    5,在Terminal窗口下进入到app/src/main/java文件夹下:

    如图所示: src_main_java.png
    6,使用命令:javah 包名+类名的格式(如 com.town.dell.andk7.Java2CJNI)
    敲下回车会在java文件夹下生成:com_town_dell_andk7_Java2CJNI.h文件,把它移 动到jni目录下

    7,在jni目录下创建Java2C.c文件,如图所示:


    Java2C_c.png
    #include "com_town_dell_andk7_Java2CJNI.h"
    JNIEXPORT jstring JNICALL Java_com_town_dell_andk7_Java2CJNI_java2C
      (JNIEnv *env, jobject instance) {
      return (*env)->NewStringUTF(env, "I am from C ANDK7_2_1.");
      }
    

    8,然后在jni文件夹下新建Android.mk和Application.mk文件如图所示:


    Android_mk.png
    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := Java2C
    LOCAL_C_INCLUDES := com_town_dell_andk7_Java2CJNI.h
    LOCAL_SRC_FILES := Java2C.c
    
    LOCAL_LDLIBS := -llog
    
    include $(BUILD_SHARED_LIBRARY)
    
    Application_mk.png
    APP_PLATFORM := android-16
    APP_ABI := all
    

    9,在app.gradle文件里面的android的defaultConfig目录下加入

    ndk{
                moduleName "Java2C" //so文件名
                abiFilters "armeabi", "armeabi-v7a", "x86", "x86_64" //CPU类型
            }
    

    和android的目录下加入

    sourceSets {
            main() {
                jniLibs.srcDirs = ['src/main/libs']
                jni.srcDirs = [] //屏蔽掉默认的jni编译生成过程
            }
        }
    

    如图所示:


    app-gradle.png

    10,配置好后sync new然后Build ->Rebuild Project
    11,然后在Terminal窗口切换到:app/src/main/jni目录下,


    Terminal_ndk-build.png

    ndk-build命令生成.so架包


    libs_so.png

    12,在Mainactivity.java中测试:

    public void clickToNative(View view) {
    
            String result = new Java2CJNI().java2C();
            Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
        }
    
    click_event.png

    然后运行项目,到此完成.

    相关文章

      网友评论

          本文标题:Android使用ndk-build构建工具开发NDK的简单de

          本文链接:https://www.haomeiwen.com/subject/irgvoqtx.html