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 ViewPager 竖向滑动
  2. android studio上HierarchyViewer的使用实例
  3. Android数据库编程教程
  4. 一些关于Activity的技巧
  5. Android(安卓)性能测试
  6. android studio真机调试offline的问题
  7. Android(安卓)Timer 更好方法
  8. Android(安卓)video streaming and encoder
  9. Android核心基础(十一)

随机推荐

  1. 史上最全的Android开发学习教程集锦【初
  2. Android App 启动流程梳理(基于 Android 1
  3. Android菜鸟的成长笔记(14)—— Android中
  4. android自定义checkBox的样式
  5. 【重拾Android】(2)SQLite数据库与数据持
  6. Android群英传笔记——第六章:Android绘图
  7. Android绘图机制(三)——自定义View的实现
  8. Android的任务栈task stack
  9. android 代码优化(2)
  10. 帮助ADT改进DDMS中的Logcat中文乱码问题