Android NDK JNI 入门笔记目录

创建项目

1. 选择一个项目模板

Native C++

2. 配置我们的项目

Name
Package name
Save location
Language
Minimum SDK

3. Customize C++ Support

C++ Standard

4. 查看第一个 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 #include extern "C" JNIEXPORT jstring JNICALLJava_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 #include extern "C" JNIEXPORT jstring JNICALLJava_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

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


代码:

NDKJNIday01

参考资料:

Android Developers NDK 指南


更多相关文章

  1. 近百android开源项目贡献
  2. 三行代码去Android(安卓)USB ADB调试确认对话框
  3. Android(安卓)Studio 导入Eclipse建立的android项目问题
  4. Android(安卓)GreenDao3.2配置及使用详解
  5. MQTT的学习研究(十五) MQTT 和android整合文章
  6. Android(安卓)The SourceSet 'instrumentTest' is not recognize
  7. Android学习笔记(九)
  8. android 升级包检测并更新实现
  9. Android(安卓)比Timer更好方法

随机推荐

  1. android 自学笔记2-布局
  2. android 指南针
  3. Custom Android(安卓)Window Title
  4. android中各种颜色在drawable.xml的值
  5. Android自定义对话框的使用
  6. Android之模仿微信登陆界面(二)
  7. Android(安卓)ProgressBar的动画效果
  8. Android(安卓)Shareperferences使用
  9. Exoplayer - HDCP test on Android
  10. Android(安卓)ShutdownThread.java源码分