Android-NDK开发之第二个例子

转自: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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值