转自:http://blog.csdn.net/geolo/article/details/5953941 第一个例子没转
第一步:首先我们在eclipse中新建一个工程,就叫做AndroidNDKSample1吧。 第一个Activity类名为AndroidNDKSample
第二步:在我们新的工程中加一个名为:jni 的文件夹。这个文件夹就是放原生态c/c++的源码的地方,我们make的时候cygwin就是编译这个 文件夹的。
第三步:在jni文件夹里新建一个Android.mk文件。注意,后缀为.mk 。
Android.mk的内容为:
LOCAL_PATH := $(call my-dir) <--------- 默认的,不需要更改
#清除一些变量
include $(CLEAR_VARS) <-------- 默认的,不需要更改
#要生成的库名
LOCAL_MODULE := native <--------在java类引用时的名称
#库对应的源文件
LOCAL_SRC_FILES := myNative.c <------在jni文件夹下的 c/c++ 的名称
#生成共享库
include $(BUILD_SHARED_LIBRARY) <-- 默认的,不需要更改
第四步:在jni文件夹里新建一个myNative.c的文件。这个文件就是c/c++文件。
myNative.c 的内容为:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<jni.h>
int getIntCount()
{
int x,y;
x = 500;
y = 600;
x+=y;
return x;
}
jint Java_com_geolo_android_AndroidNDKSample_getIntCountFromJNI(JNIEnv *env, jobject thiz){
return getIntCount();
}
第五步: 编译jni文件夹里的原文件。 运行cygwin,不断cd或cd .. 到你工程目录的jni文件夹下。
例如我的:/cygdrive/e/androidNDKspace/AndroidNDKSample1/jni
之后运行命令 $NDKROOT/ndk-build
编译成功会是如此
Administrator@PC-201009201844 /cygdrive/e/androidNDKspace/AndroidNDKSample1/jni
$ $NDKROOT/ndk-build
Compile thumb : native <= /cygdrive/e/androidNDKspace/AndroidNDKSample1/jni/myN
ative.c
SharedLibrary : libnative.so
Install : libnative.so => /cygdrive/e/androidNDKspace/AndroidNDKSample1/l
ibs/armeabi
第六步:刷新eclipse工程。这时候会多出obj和libs文件夹。
第七步:写你的java文件。(这一步提倡在第四步之前写)内容为:
package com.geolo.android;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class AndroidNDKSample extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView NDKText = (TextView)findViewById(R.id.text);
NDKText.setText("getIntCount: " + getIntCountFromJNI());
}
static{
System.loadLibrary("native");
}
public native int getIntCountFromJNI();
}
main.xml为:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/text" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
</LinearLayout>
好吧,运行你的程序了。。。。
如果有什么疑问: 请和我联系:QQ303314679 Email:geolo@vip.qq.com