欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android NDK JNI 入门笔记-day01-创建项目并运行

程序员文章站 2022-06-06 17:38:03
...

* Android NDK JNI 入门笔记目录 *

Android NDK JNI 入门笔记-day01-创建项目并运行

创建项目

1. 选择一个项目模板

Native C++

Android NDK JNI 入门笔记-day01-创建项目并运行

2. 配置我们的项目

Name
Package name
Save location
Language
Minimum SDK

Android NDK JNI 入门笔记-day01-创建项目并运行

3. Customize C++ Support

C++ Standard

Android NDK JNI 入门笔记-day01-创建项目并运行

4. 查看第一个 NDK-JNI 项目

Android NDK JNI 入门笔记-day01-创建项目并运行

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.ihubin.ndkjni"
        ......
    }

    buildTypes {
        ......
    }

    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }
}

dependencies {
    ......
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

add_library(
             native-lib
             SHARED
             native-lib.cpp )

find_library(
              log-lib
              log )

target_link_libraries(
                       native-lib
                       ${log-lib} )

native-lib.cpp

#include <jni.h>
#include <string>

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

MainActivity.java

package com.ihubin.ndkjni;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv = findViewById(R.id.sample_text);
        tv.setText(stringFromJNI());
    }

    public native String stringFromJNI();
}

运行项目

Android NDK JNI 入门笔记-day01-创建项目并运行

修改 C++ 代码,重新运行

#include <jni.h>
#include <string>

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

Android NDK JNI 入门笔记-day01-创建项目并运行

可以看到,我们修改的 C++ 代码已经生效了。

查看 APK

Android NDK JNI 入门笔记-day01-创建项目并运行

至此,我们已经学会了在 Android 项目中使用 C++ 代码。


代码:

NDKJNIday01

参考资料:

Android Developers NDK 指南


相关标签: NDK