Android Studio NDK开发入门

                                                                                                 


Android Studio NDK开发入门

1.点击android studio 的左上角的“File”-->"Settings"-->"Appearance & Behavior"-->"Android SDK"-->"SDK Tools",下载NDK和CMake。

2.点击android studio 的左上角的“File”-->"project structure"-->"SDK Location"配置好NDK的路径

3.旧版本android studio:创建jni目录:右击“app”--> “New > Folder”--> “JNI Folder”创建jni目录,创建后app目录下会显示cpp文件夹

花粟鼠版的android studio :创建jni目录的项目右击“app”--> “New >New Project>Native C++“创建jni目录的项目,创建后app目录下会显示cpp文件夹

4.创建C++文件:右击cpp > New > C/C++ Source File,在弹出的对话框中输入文件名为 test(随意取名),Type选择".cpp",这样就创建出了一个test.cpp的文件,用于写C++代码。

  

在test.cpp文件里写两个函数getString()和 add(),代码如下:

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

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

extern "C"
JNIEXPORT jint JNICALL
Java_com_ndkdemo_MainActivity_add(JNIEnv *env, jobject thiz, jint x, jint y) {
    return x+y;
}

其中com_ndkdemo是你的项目的包名,我项目的包名是 com.ndkdemo,这里就写成com_ndkdemo

6.创建CMakeLists.txt文件:右击cpp > New > File,在弹出来的输入框中输入:CMakeLists.txt (注:必须用这个名字),并输入如下代码:

# 设置构建native library所需的CMake最低版本。
cmake_minimum_required(VERSION 3.1.0)

#创建一个库(多次调用add_library即可创建多个库)
add_library( # 设置库的名称
             test-lib

             # 将库设置为共享库(即so文件)
             SHARED

             # 指定源文件的相对路径
             test.cpp )

7.进行编译

右击app > Link C++ Project with Gradle,在弹出来的对话框中指定CMakeLists.txt文件的位置,如下:

编译完成后会在app目录下的build.gradle文件中生成如下内容:

android {
    externalNativeBuild {
        cmake {
            path file('src/main/jni/CMakeLists.txt')
        }
    }
}

8.调用test.cpp里的函数,getString()和 add()方法

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Toast.makeText(this, getString(), Toast.LENGTH_SHORT).show()
        Log.i("TAG", "add=${add(1, 2)}")
    }

    external fun getString(): String
    external fun add(x: Int, y: Int): Int

    companion object {
        init {
            System.loadLibrary("test-lib")
        }
    }
}
public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary("test-lib");

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(this,getString(),Toast.LENGTH_SHORT).show;
        Log.e("TAG","add="+add(1,2));
    }

    public static native String getString();

    public static native int add(int x,int y);
}

运行APP,界面会吐司出 "Hello C++" ,并打印add=3。

OK,简单的NDK入门就这样完成了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值