1. 程式人生 > >Android NDK 之 Hello World

Android NDK 之 Hello World

module path package ren ide string style activity code

首先編寫Jni接口的c文件,此文件命名有些特殊,具體的命名方式可以參考文檔來做。

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


JNIEXPORT jstring JNICALL
Java_com_renhui_mplayer_MainActivity_displayHelloWorld(JNIEnv *env, jobject obj)
{
    return (*env)->NewStringUTF(env, "11111");
}

配置Android.mk

#定義本地路徑變量 LOCAL_PATH
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native-lib
LOCAL_SRC_FILES := native-lib.c
include $(BUILD_SHARED_LIBRARY)

配置好mk文件後,在jni目錄下執行ndk-build,即可獲得當前所有的cpu平臺的so文件。將so文件導入到項目中後,再寫Java層的代碼。

Java 代碼

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

    
/** * A native method that is implemented by the ‘native-lib‘ native library, * which is packaged with this application. */ public native String displayHelloWorld(); // Used to load the ‘native-lib‘ library on application startup. static { System.loadLibrary("native-lib"); }

寫完後,執行可以在真機上看到屏幕中有11111的內容輸出。此時,NDK的hello world的學習就結束了,後續理解其他的NDK項目時,可以根據此思路來做相應的理解和調整。

Android NDK 之 Hello World