Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android NDK編寫一個HelloWorld

Android NDK編寫一個HelloWorld

編輯:關於Android編程

在上一篇博文中,我們搭建好了Android ndk 的開發環境,作為碼農,我們是不是先來寫一個HelloWorld來表示一下自己的到來。

(1)首先在你的工作空間建一個Android項目,這裡我建立的為NDKHelloWorld。項目結構如圖(1)

\

圖(1)

(2)在MainActivity中聲明你所需要的本地方法,MainActivity的代碼如下所示:

package com.gc.ndkhelloworld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
/**
 * 
 * @author Android將軍
 *
 */
public class MainActivity extends Activity {

	private TextView mTextView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView=(TextView) findViewById(R.id.tv);
        mTextView.setText(helloWorld());
    }
    /**
     * 在Java代碼中聲明本地方法
     * @return
     */
    public native String helloWorld();
}
(2)選中該項目,右擊選擇Android Tools,然後選擇Add Native Support...,如圖(2)所示:

 

\

圖(2)

然後出現圖(3)所示情況:

\

 

圖(3)

點擊finish之後,會發現項目的目錄結構如圖(4)所示:

\

 

圖(4)

下面我們開始實現本地方法,helloworld.cpp的代碼如下:

 

#include 
#include 
/**
 * @author Android將軍
 */
/**
 *
 * 實現本地方法時,一個要按照函數命名規則來命名,函數的命名規則如下:
 * Java_PackageName_ClassName_MethodName
 * 從這個規則可以看出,任何由Java程序調用的NDK函數名都必須以Java開頭,緊跟著要調用該函數的Java類
 * 所在的包名(中間的“.”要改成“_”),然後會跟Java類名,最後是方法名,各部分直接都用“_”連接。
 */
extern C
{
jstring Java_com_gc_ndkhelloworld_MainActivity_helloWorld(JNIEnv *env,jobject obj)
{
return env->NewStringUTF(NDK,HelloWorld!);
}
}

實現完本地方法後,下面我們需要編譯本地庫,選中該項目,右擊選擇Build Project來進行編譯本地庫,編譯完本地庫之後,就需要加載本地庫了。在靜態初始化塊內調用System.loadLibrary加載本地庫,是加載庫的最簡單的方法,本例中加載庫的代碼如下所示:
static {
	System.loadLibrary(helloworld);	
	}
編譯完本地庫之後,你可以發現libs目錄下多了一個armeabi目錄,這是因為我們沒有為該項目指定一個Application.mk文件,而Android NDK構建系統默認情況下為armeabi ABI生成二進制文件。為了我們的本地庫可以在NDK所支持的所有架構上運行,我們在jni目錄下需要增加一個Application.mk文件,文件內容如下:

APP_ABI := all

如果一切順利的話,大家可以在模擬器或者真機上看到該案例的運行效果如下:

\

 

如果大家在實現本地方法時,遇到 could not be resolved或Unresolved inclusion: 情況,請按下圖解決:
\
 

 

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