package com.ndk.hello; public class Classs { public native String say_hello(); static { System.loadLibrary("HelloAndroidNDK"); } }
javah -classpath ../bin/classes com.ndk.hello.Classs
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_ndk_hello_Classs */ #ifndef _Included_com_ndk_hello_Classs #define _Included_com_ndk_hello_Classs #ifdef __cplusplus extern "C" { #endif /* * Class: com_ndk_hello_Classs * Method: say_hello * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_ndk_hello_Classs_say_1hello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
#include "com_ndk_hello_Classs.h" JNIEXPORT jstring JNICALL Java_com_ndk_hello_Classs_say_1hello(JNIEnv * env, jobject this) { return (*env)->NewStringUTF(env,"Hello Java NDK!"); }
# Copyright (C) 2009 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := HelloAndroidNDK LOCAL_SRC_FILES := com_ndk_hello_Classs.c include $(BUILD_SHARED_LIBRARY)
$NDK/ndk-build
package com.ndk.hello; import com.ndk.hello.Classs; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroidNDK extends Activity{ @Override public void onCreate(Bundle s) { super.onCreate(s); Classs c = new Classs(); String say = c.say_hello(); TextView tv = new TextView(this); tv.setText(say); setContentView(tv); } }
原文:http://www.cnblogs.com/wubugui/p/4270958.html