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


    * Android NDK JNI 入门笔记目录 *

    Android Studio 3.6.1

    创建项目

    1. 选择一个项目模板

    Native C++

    Select a Project Template

    2. 配置我们的项目

    Name
    Package name
    Save location
    Language
    Minimum SDK

    Configure your project

    3. Customize C++ Support

    C++ Standard

    Customize C++ Support

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

    查看第一个 NDK-JNI 项目

    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();
    }
    

    运行项目

    运行项目

    修改 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());
    }
    

    重新运行项目

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

    查看 APK

    查看项目生成的 APK

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


    代码:

    NDKJNIday01

    参考资料:

    Android Developers NDK 指南


  • 相关阅读:
    Golang的math包常用方法
    部署tomcat部署实战案例
    CentOS 7.6操作系统部署JDK实战案例
    Linux防火墙iptables命令管理入门
    Docker镜像-基于DockerFile制作编译版nginx镜像
    使用Docker快速部署Mysql服务器
    Docker镜像-基于DockerFile制作yum版nginx镜像
    Docker镜像-手动制作yum版nginx镜像
    Docker容器操作基础命令
    Docker镜像管理篇
  • 原文地址:https://www.cnblogs.com/binglingziyu/p/android-ndk-jni-basic-day01.html
Copyright © 2020-2023  润新知