pengenalan android ndk

38
Sidiq Permana Intel Android Software Innovator & CIO of Nusantara Beta Studio Pengenalan Android NDK

Upload: sidiq-permana

Post on 11-Feb-2017

1.855 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Pengenalan android ndk

Sidiq PermanaIntel Android Software Innovator & CIO of

Nusantara Beta Studio

Pengenalan Android NDK

Page 2: Pengenalan android ndk

NDK adalah satu toolset yang disediakan oleh android untuk memudahkan pengembang dalam mengintegrasikan kode atau library yang ditulis dalam bahasa C dan C++ kedalam aplikasi yang dikembangkan

NDK dalam beberapa kasus akan meningkatkan peforma komputasi dan pemrosesan data yang kompleks

NDK akan memudahkan penulisan kode untuk terintegrasi langsung dengan kernel dan hardware device pada android

NDK digunakan oleh SDK android sebagai abstraksi layer presentasi ke layer hardware. Sehingga memudahkan developer untuk berinteraksi langsung dengan hardware tanpa menggunakan bahasa Java

Apa itu NDK

Page 3: Pengenalan android ndk

Dapat menggunakan kode-kode / library yang ditulis dalam bahasa C/C++ ke dalam aplikasi yang dikembangkan

Memudahkan interaksi langsung dengan hardware yang dibutuhkan jika ada custom usage yang dibutuhkan

Dalam beberapa kasus C/C++ memberikan performa aplikasi yang bagus untuk melakukan proses komputasi untuk kalkulasi yang besar

Sebagai solusi jika memang proses-proses tertentu hanya bisa atau hanya terdapat dukungan dalam bahasa C/C++

Manfaat menggunakan NDK

Page 4: Pengenalan android ndk

Kode dan project kita akan semakin kompleks Dibutuhkan pemahaman terhadap C/C++ dan JNI (Java

Native Interface) bagi yang belum familiar Kebutuhan resource yang besar bagi pengguna windows

untuk download cygwin dan Android NDK yang lumayan besar

Kelemahan Menggunakan NDK

Page 5: Pengenalan android ndk

Ketika kamu bertemu dengan algoritma dengan kompleksitas yang tinggi atau kalkulasi kompleks pada permodelan matematika

Ketika aplikasi kamu membutuhkan koneksi langsung ke layer device seperti membaca signal radio dari bluetooth, koneksi ke VOIP, implementasi physic computation pada game atau bahkan akses untuk me-render augmentasi kamera dengan penambahan object secara real time.

Waktu terbaik menggunakan NDK

Page 6: Pengenalan android ndk

Contoh Aplikasi yang menggunakan NDK

Page 7: Pengenalan android ndk

TuneIn Radio Pro textPlus Microsoft Tag Star Chart SPYMouse SoundHound Roll in the Hole Facebook Raging ThunderPocketCloud Camera Zoom FX Blow Up Paper Camera Ocean HD Screen Saver Office Suite Jump Desktop Fieldrunners Etc...

Page 8: Pengenalan android ndk

Contoh library dan project yang menggunakan NDK

Page 9: Pengenalan android ndk

http://opencv.org/platforms/android.html http://giderosmobile.com/ https://github.com/zxing/zxing http://sipdroid.org/ Etc...

Hampir semua game engine sudah mengenkapsulasi ndk-programming didalam sdk nya. Sehingga developer tinggal akses saja pada resource yang dibutuhkan contoh : Unity dan Gideros

Page 10: Pengenalan android ndk

Bagaimana NDK Bekerja

JNI

Java Android Common Libraries

C Based Libraries

The Communication Between C++ and JAVA is Using JNI (Java Native Interface)

Native Development Kit

Page 11: Pengenalan android ndk

Harus familiar dengan bahasa C/C++ Harus familiar dengan JNI (Java Native Interface) Terkadang harus menggunakan command line tapi di

eclipse sudah di simplify dengan klik kanan :D Familiar dengan penggunaan cygwin dan harus terinstal

terlebih dahulu (untuk pengguna windows, untuk mac dan linux sudah default)

Harus familiar dengan Android Application Development baik itu SDK nya maupun IDE nya

Pemahaman dasar untuk menggunakan NDK ?

Page 12: Pengenalan android ndk

Semua device dengan Intel Processor pada smartphone android sudah mendukung Ekosistem Android secara menyeluruh

Dalvik Virtual Machine sudah teroptimalisasi untuk Intel platform Aplikasi berbasis NDK akan langsung bisa dijalankan tanpa

adanya kompilasi ulang untuk Intel platform Sejak tahun 2011 Android NDK sudah menyediakan toolchain

berbasis x86 Performa aplikasi ? Jelas tidak perlu ditanyakan Porting aplikasi hanya dibutuhkan jika ada kode yang

bergantung pada prosesor tertentu Seperangkat Tools pendukung

Apa yang Intel punya untuk mendukung pengembangan aplikasi NDK ?

Page 13: Pengenalan android ndk
Page 14: Pengenalan android ndk
Page 15: Pengenalan android ndk
Page 16: Pengenalan android ndk
Page 17: Pengenalan android ndk
Page 18: Pengenalan android ndk
Page 19: Pengenalan android ndk
Page 20: Pengenalan android ndk
Page 21: Pengenalan android ndk

Want more ?https://software.intel.com

Page 22: Pengenalan android ndk

The case : menampilkan teks “Hello World dari NDK!!!” dengan menggunakan Android NDK

Show me the code

Page 23: Pengenalan android ndk

Android SDK sudah terinstal Android NDK sudah terinstal Cygwin (Untuk windows sudah terinstal)

Pastikan....

Page 24: Pengenalan android ndk

C/C++ code dalam bentuk JNI

Page 25: Pengenalan android ndk

Android.mk

Page 26: Pengenalan android ndk

Letakan di folder jni

Page 27: Pengenalan android ndk

Java Code

Page 28: Pengenalan android ndk

Hasil kompilasi

Page 29: Pengenalan android ndk

Jadi apa yang didapat ?

C/C++ Code Lib.so

Java

Compiled With NDK

Call

Page 30: Pengenalan android ndk

Objective : Untuk mendapatkan gambaran proses sederhana C/C++, JNI dan Java dalam NDK

Case 2 : Hitung Luas Persegi Panjang dengan NDK

Page 31: Pengenalan android ndk

C/C++ Code

Page 32: Pengenalan android ndk

Android.mk

Page 33: Pengenalan android ndk

Java Code

Page 34: Pengenalan android ndk

Klik kanan di project lalu pilih add native support

Klik Finish pada dialog yang muncul

Ndk enable

Page 35: Pengenalan android ndk

Klik kanan di project lalu pilih Make Targets Create

Masukan nama “Target Name” pada dialog dan “OK”

Kompilasi C/C++ code menjadi lib .so

Page 36: Pengenalan android ndk

Build .so dengan cara Make Target Build, lalu pilih target yang sudah dibuat sebelumnya lalu Build pada dialog yang muncul

Page 37: Pengenalan android ndk

Result

Page 38: Pengenalan android ndk

Want more ? Lets’s write some codes. Thank you