美文网首页Android-NDK/JNI
Android JNI开发:记一次从 ndk-build 迁移到

Android JNI开发:记一次从 ndk-build 迁移到

作者: ImWiki | 来源:发表于2019-11-09 22:53 被阅读0次

    在Android Studio 2.2开始支持CMake方式编译C++代码,大大简化了JNI的开发。从ndk-build迁移到CMake也非常简单。

    修改Gradle,增加对CMake的支持
    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion 29
        defaultConfig {
            minSdkVersion 15
            targetSdkVersion 29
            versionCode 1
            versionName "1.0"
    //        ndk {
    //            moduleName "sign"
    //            stl "stlport_static"
    //            ldLibs "log"
    //            abiFilters "armeabi" ,"x86","armeabi-v7a", "x86_64", "arm64-v8a"
    //            cFlags "-w -fexceptions"
    //        }
            externalNativeBuild {
                cmake {
                    cppFlags "-w -fexceptions"
                }
            }
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
        externalNativeBuild {
            cmake {
                path "src/main/cpp/CMakeLists.txt"
                version "3.10.2"
            }
        }
    }
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    }
    
    修改src/main/jni为src/main/cpp

    ndk-build的C++存放目录在jni,所以需要修改为cpp。

    src/main/cpp增加CMakeLists.txt文件
    cmake_minimum_required(VERSION 3.4.1)
    # 添加所有的C++相关代码到下面set方法
    set(SRC_LISTS
            aaa.h
            aaa.cpp
            bbb.h
            bbb.cpp
            XXXX.cpp
            com_xx_xxx_jni_XXXX.h
            )
    # moduleName "sign"
    add_library(sign
            SHARED
            ${SRC_LISTS})
    
    总结

    https://developer.android.google.cn/ndk/guides/cmake

    只需要简单的三步就完成了从ndk-build迁移到cmake方式编译JNI代码。在以前只支持ndk-build的时候,开发JNI是一件非常痛苦的事情,编写C++代码只能使用其他的工具调试,比如Xcode、CLion。改成CMake方式编译,瞬间化解了我几年前开发JNI的痛苦记忆。

    1. CMake对C++代码进行Debug非常简单,就好像是调试java代码一样。
    2. CMake和Gradle结合,不会像ndk-build一样对C++代码显示一片红色警告,而是看到正确的include引用和代码联想。

    相关文章

      网友评论

        本文标题:Android JNI开发:记一次从 ndk-build 迁移到

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