android ndk/jni入門執行個體(環境:ubuntu10.10+android ndk-r6b)

來源:互聯網
上載者:User

     安裝步驟:

        1. 下載android ndk,這個就不多說了,我的是ndk-r6b。

        2.解壓縮即是安裝。我放在 ~下面了。

    寫個HELLO WORLD

  1.用Eclipse IDE產生一個預設的最簡單的工程,就是那個只有一個TextView的Hello world. 注意包名,比如我的 com.easou.abo.hellojni,類名HelloJNIActivity。

 2.去修改一下res/layout/main.xml,為那個沒有ID的TextView增加一個ID,比如 android:id=”@+id/label” ,然後再修改這個HelloJNIActivity,如下:

package com.easou.abo.hellojni;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class HelloJNIActivity extends Activity {public native String sayHello(String name);static {System.loadLibrary("hello_jni"); }    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        TextView label=(TextView)findViewById(R.id.label);      label.setText(sayHello("word"));    }}

3、用ecliplse在工程根目錄下建一個jni目錄,在jni目錄下建3個檔案,一是Android.mk 二是 hello_a.c,三是hello_a.h。

4、用終端定位到工程目錄的bin/classes下,我的是(/home/abo/workspace/HelloJNI/bin/classes)

5、執行命令javah com.easou.abo.hellojni.HelloJNIActivity,執行完後,在bin/classes目錄下會有一個com_easou_abo_hellojni_HelloJNIActivity.h檔案,用gedit開啟,複製裡面的內容到hello_a.h。

6.現在編輯hello_a.c,寫實現代碼,很簡單:

#include "hello_a.h"//所有JNI的函數都有這個JNIEnv 和 jobject ,可以用它做很多事情(具體參考 jni.h)jstring JNICALL Java_com_easou_abo_hellojni_HelloJNIActivity_sayHello(JNIEnv * env, jobject thiz, jstring name){//取參數轉成我們熟悉的char*const char* param=(*env)->GetStringUTFChars(env,name,0);//這兒好熟悉啊char * str=(char*)malloc(32*sizeof(char));strcpy(str,"hello ");strcat(str,param);//釋放掉param(*env)->ReleaseStringUTFChars(env,name,param);//返回結果jstring ret= (*env)->NewStringUTF(env,str);free(str);return ret;}

 7.可以編輯那個Android.mk了,也相當簡單,因為我們只是一個Hello world,想複雜也不知如何複雜:

#設定工作目錄為目前的目錄LOCAL_PATH := $(call my-dir)#執行清空一下各個參數include $(CLEAR_VARS)#設定編譯出的模組名稱LOCAL_MODULE := hello_jni#設定源檔案清單LOCAL_SRC_FILES :=hello_a.c#執行產生共用庫include $(BUILD_SHARED_LIBRARY) 

8、在終端定位到jni目錄下,運行 ~/android-ndk-r6b/ndk-build,成功後,工程目錄下會出現一個libs目錄。libs/armeabi/libhello_jni.so檔案。

9、回到eclipse,運行工程,就行了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.