美文网首页
android ndk 开发1

android ndk 开发1

作者: 客观开发者 | 来源:发表于2022-06-10 09:48 被阅读0次

基础

安装android studio 然后配置好 ndk 。
这俩个需要调勾


image.png

创建项目


image.png

即可得一个demo 项目。

java 和kotlin 中的使用

image.png

CMakeLists.txt
内容

cmake_minimum_required(VERSION 3.18.1)
project("app")
add_library(
        app
        SHARED
        native-lib.cpp
)
find_library(
        log-lib
        log
)
target_link_libraries(
        app
        ${log-lib}
)
#include <jni.h>
#include <string>

/**
 * 返回 jstring
 * @param env
 * @return jstring
 */
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_app_CppUtils_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

/**
 * 返回 jint
 * @param env
 * @return jint
 */
extern "C"
JNIEXPORT jint JNICALL
Java_com_example_app_AppCpp_add(JNIEnv *env, jobject thiz, jint a, jint b) {
    return a + b;
}

java 中使用

package com.example.app;

/**
 * java 版本
 */
public class AppCpp {

    static {
        System.loadLibrary("app");
    }

    public native int add(int a, int b);

}

kotlin 中的版本

package com.example.app

/**
 *
 * kotlin 版本
 *
 */
object CppUtils {

    init {
        System.loadLibrary("app")
    }

    external fun stringFromJNI(): String

}

最重要的是包名 要正确。。。

打包可以生产出


image.png

我感觉不全呢发现了一个问题

问题原因

当前(20200702)NDK基本为20甚至21版本,而根据Android官网AndroidABIs页面提示,从v17开始就不再支持armeabimips架构

怎么用

image.png

看图复制到项目里面

配置build里面参数


defaultConfig {
      .......
        ndk {
            abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
        }

    }
 
    sourceSets {
        main {
            assets {
                jniLibs.srcDirs = ['libs']
            }
        }
    }

其他内容我删除了。然后再用

这个包里面内容


image.png image.png

我上面的demo 内容是

extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_app_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

这里的包名和很重要
Java_com_example_app_MainActivity_stringFromJNI(

相关文章

网友评论

      本文标题:android ndk 开发1

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