Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android NDK開發初步

Android NDK開發初步

編輯:關於Android編程

在配置好NDK開發之後就可以使用C/C++開發android了。下面以一個HelloWorld項目來說明
1.新建一個Android工程
新建一個HelloWorld工程
代碼如下
  1. package com.zhycheng;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.TextView;
  5.  
  6. public class HelloWorldActivity extends Activity {
  7. /** Called when the activity is first created. */
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. TextView tv=new TextView(this);
  12. tv.setText(srringFromCpp());
  13. setContentView(tv); }
  14. public native String srringFromCpp();
  15. static { System.loadLibrary(HelloWorld); }}


    System.loadLibrary(HelloWorld);中的HelloWorld是動態鏈接庫libHelloWorld.so
    2 生成頭文件和源文件
    先在工程目錄下新建一個文件夾叫做jni
    現在我要使用javah這個工具生成頭文件
    在工程的目錄下執行命令
    zhycheng@zhycheng-Lenovo-B460:~/androidworkspace/HelloWorld$ javah -classpath bin/classes -d jni com.zhycheng.HelloWorldActivity
    這時在jni文件夾下就生成了com_zhycheng_HelloWorldActivity.h頭文件,內容如下
    1. /* DO NOT EDIT THIS FILE - it is machine generated */
    2. #include
    3. /* Header for class com_zhycheng_HelloWorldActivity */
    4.  
    5. #ifndef _Included_com_zhycheng_HelloWorldActivity
    6. #define _Included_com_zhycheng_HelloWorldActivity
    7. #ifdef __cplusplus
    8. extern C {
    9. #endif
    10. /*
    11. * Class: com_zhycheng_HelloWorldActivity
    12. * Method: srringFromCpp
    13. * Signature: ()Ljava/lang/String;
    14. */
    15. JNIEXPORT jstring JNICALL Java_com_zhycheng_HelloWorldActivity_srringFromCpp
    16. (JNIEnv *, jobject);
    17.  
    18. #ifdef __cplusplus
    19. }
    20. #endif
    21. #endif
    22. 在這個文件裡,我們可以得到srringFromCpp的函數名。
    23. 下面我在jni文件夾裡新建一個HelloWord.c文件內容如下
    24. #include
    25. #include
    26. JNIEXPORT jstring JNICALL Java_com_zhycheng_HelloWorldActivity_srringFromCpp
    27. (JNIEnv *env, jobject obj)
    28. {
    29. return (*env)->NewStringUTF(env,張譯成);
    30. }


      這裡還要在jni目錄裡新建一個Android.mk文件,內容如下
      1. LOCAL_PATH:= $(call my-dir)
      2.  
      3. include $(CLEAR_VARS)
      4.  
      5. LOCAL_MODULE := HelloWorld
      6.  
      7. LOCAL_SRC_FILES:= HelloWorld.c
      8.  
      9. include $(BUILD_SHARED_LIBRARY)




        4 生成動態鏈接庫
        在工程目錄裡執行下面的命令
        1. zhycheng@zhycheng-Lenovo-B460:~/androidworkspace/HelloWorld$ ndk-build
        2. Compile thumb : HelloWorld <= HelloWorld.c
        3. SharedLibrary : libHelloWorld.so
        4. Install : libHelloWorld.so => libs/armeabi/libHelloWorld.so


          這樣就得到了libHelloWorld.so文件。這個文件在libs/armeabi文件夾裡。

          5 運行整個工程

          \


          可以看到,在界面上顯示了從動態鏈接庫返回的字符串。

           

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved