Android Studio中使用JNI 把初夜送给HelloWorld

AndroidStudio玩JNI,比在eclipse简单十倍左右。不需要那些繁琐的配置。NDK也可以直接下到

一、建项目

相比平时建项目,多勾选一个,如图:


  代表包含 C++支持。一路next下去,到最后一步,会有个比平时多一个步骤如图,选择C++11:


二、观察项目下载插件 NDK,CMake:


clean项目。

三、写C++代码,当然,我们Android开发对C不熟悉,但写个helloWorld还是能办到的,c代码在:


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

extern "C"
jstring
Java_com_example_administrator_myapplication_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "HelloWorld from C++";
    int i = 2;
    return env->NewStringUTF(hello.c_str());
}

extern "C"
jint
        Java_com_example_administrator_myapplication_MainActivity_getNum(
                JNIEnv* env,
                jobject jobject1){
    int i = 2;
    int t = 3;
    int k = i+t;
    return k;
}

至于语法,为什么是jstring,而不是string,JNIEnv又是什么,为什么是 关键词extern ,jni.h又是什么东西?还有那jobject 又是什么?为什么 jstring和 jint return的方式不相同?有好多的疑问,我也不知道,一步步慢慢了解吧,毕竟是初夜,不要有太多的姿势。

三、写java代码中调用。

 public native String stringFromJNI();

    public native int getNum();

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

主要就是这几句, System.loadLibrary("native-lib") 它是你C文件名。然后
public native String stringFromJNI();不用你去实现它。写好关键词 native。
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    // Example of a call to a native method
    TextView tv = (TextView) findViewById(R.id.sample_text);
    tv.setText(stringFromJNI()+getNum());
    }
好了,现在可以运行demo了。

如果想知道,怎么制作so文件,然后在别的项目中怎么调用,看下一篇吧。

附上代码:点击下载






已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页