20.11.2016 Views

ANDROID APP

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

286 บทที่ 11 เทคนิคขั้นสูงสำาหรับพัฒนาแอพบนแอนดรอยด์<br />

ชุดคำสั่งที่ 11.5 jni/Android.mk<br />

LOCAL_PATH := $(call my-dir)<br />

include $(CLEAR_VARS)<br />

LOCAL_MODULE := ndkcookbook<br />

LOCAL_SRC_FILES := cookbook.c<br />

include $(BUILD_SHARED_LIBRARY)<br />

ขั้นตอนต่อไปจะเป็นการบิวด์ไลบรารี ใน NDK-r4 มีสคริปต์ชื่อ ndk-build อยู่ในไดเร็กทอรี<br />

NDK ซึ่งจะใช้ในการบิวด์โปรเจ็กต์ รวมถึงไลบรารีอื่นๆ ที่เกี่ยวข้อง สำหรับใน NDK เวอร์ชั่นก่อนหน้านี้<br />

เราจะใช้คำสั่ง make <strong>APP</strong>=NAME_OF_<strong>APP</strong>LICATION แทน หลังจากที่บิวด์ไลบรารีแล้ว<br />

โฟลเดอร์ lib/ ก็จะถูกสร้างขึ้น และเก็บไฟล์ไลบรารี libndkcookbook.so เอาไว้ พร้อมทั้งมีไฟล์<br />

gdb จำนวน 2 ไฟล์เพื่อใช้ประโยชน์ในการดีบั๊กแอพด้วย<br />

แอคทิวิตี้ที่จะเรียกใช้งานไลบรารีนี้จะใช้คำสั่ง System.loadLibrary() เพื่อโหลดไลบรารี<br />

ndkcookbook ดังแสดงไว้ในชุดคำสั่งที่ 11.6 ซึ่งผลการทำงานของแอพจะแสดงไว้ในรูปที่ 11.2<br />

ชุดคำสั่งที่ 11.6 src/com/cookbook/advance/ndk/ndk.java<br />

package com.cookbook.advance.ndk;<br />

import android.app.Activity;<br />

import android.widget.TextView;<br />

import android.os.Bundle;<br />

public class ndk extends Activity {<br />

@Override<br />

public void onCreate(Bundle savedInstanceState) {<br />

super.onCreate(savedInstanceState);<br />

TextView tv = new TextView(this);<br />

tv.setText(" native calculation on factorial :"+factorial(30));<br />

setContentView(tv);<br />

}<br />

public static native int factorial(int n);<br />

static {<br />

System.loadLibrary("ndkcookbook");<br />

}<br />

}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!