SlideShare a Scribd company logo
1 of 19
Android 程式設計(6)
講師:王瑋毅
概要
• Android Studio 安裝NDK
• Android Studio 使用NDK
• 使用NDK增加程式
Android Studio安裝NDK
• 開啟專案,在選單選擇Tools -> Android -> SDK Manager
• 點選SDK Tools分頁,將LLDB、 Cmake、NDK勾選
• 點選Apply,然後點擊OK進行安裝
Android Studio 使用NDK(1/5)
• 新增一個新專案,勾選 Include C++ support,點選Next進行下一
步
Android Studio 使用NDK(2/5)
• 選擇要開發的類型(c++ Support會只有兩個專案類型可選)
• 點選Next進行下一步
Android Studio 使用NDK(3/5)
• 將C++ Standard改為C++11,並勾選Exceptions Support 和 Runtime Type
Information Support
• Exceptions Support: C++異常處理會用到
所以需要勾選
• Runtime Type Information Support: 如果需
要動態類型的偵測,就要勾選,像是指標
Android Studio 使用NDK(4/5)
• 檢查檔案結構是否完整
Android Studio 使用NDK(5/5)
• 使用NDK的C/C++程式碼必須引入jni.h
• 資料型態不一樣,像是String -> jstring,boolean -> jboolean...等
• 函式定義方法為:
JNIEXPORT 回傳型態 JNICALL Java_資源包名稱_類別名稱_函示名稱(JNIEnv *env, jobject)
回傳型態: NDK定義的資料型態
資源包名稱: package name
類別名稱: 呼叫這個函示的類別名稱
函示名稱: 自行命名的函示名稱
函示參數: 至少要有JNIEnv *env 和 jobject,有需要可增加參數
使用NDK增加程式(1/4)
• 在cpp資料夾右鍵 -> New -> C/C++ Source File 建立新檔案
• 在Name輸入testMessage
使用NDK增加程式(2/4)
• 複製native-lib.cpp的程式碼貼到testMessage.cpp,再將函式名稱改
為 getTestString
• 將顯示訊息做更改,這裡是改為”測試”
使用NDK增加程式(3/4)
• 開啟CMakeLists.txt,並加入
testMessage才可連結到關聯函式
庫名稱,並加入C++對應的路徑
• target_link_libraries需增加新的
library函式庫名稱
使用NDK增加程式(4/4)
• 在MainActivity.java 加入testMessage
NDK導入OpenCV(1/6)
• 到OpenCV官網下載OpenCV for Android,並解壓縮
NDK導入OpenCV(2/6)
• 開啟解壓縮的資料夾,...OpenCV-android-
sdksdknativejniinclude,將include資料夾
複製到專案的cpp資料夾內
NDK導入OpenCV(3/6)
• 在main資料夾,點擊右鍵選
New -> Directory建立資料夾,
命名為jniLibs,在jniLibs資料
夾再新增一個資料夾,
名為armeabi
NDK導入OpenCV(4/6)
• 到...OpenCV-android-sdksdknative
libsarmeabi位子,找到
libopencv_java3.so複製到專案
NDK導入OpenCV(5/6)
• 開啟CMakeLists.txt,設定opencv lib
NDK導入OpenCV(6/6)
• 開啟app內的build.gradle,加入ndk設定
謝謝大家

More Related Content

What's hot

Introduction to air for android 邱彦林
Introduction to air for android 邱彦林Introduction to air for android 邱彦林
Introduction to air for android 邱彦林FLASH开发者交流会
 
GAE Java IDE installation
GAE Java IDE installationGAE Java IDE installation
GAE Java IDE installationSimon Su
 
Phonegap入門
Phonegap入門Phonegap入門
Phonegap入門Roy Chen
 
Orientation Program
Orientation ProgramOrientation Program
Orientation ProgramLuo Korth
 
App inventor 教學講義 chapter1
App inventor 教學講義 chapter1App inventor 教學講義 chapter1
App inventor 教學講義 chapter1Jerry Wu
 
20140222 Unity Windows lab 移轉實作營
20140222 Unity Windows lab 移轉實作營 20140222 Unity Windows lab 移轉實作營
20140222 Unity Windows lab 移轉實作營 Meng-Ru (Raymond) Tsai
 
轻松写出优雅的Java代码之check style
轻松写出优雅的Java代码之check style轻松写出优雅的Java代码之check style
轻松写出优雅的Java代码之check styleZhen Li
 
2013/05/19 - Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 @jsdc2013
2013/05/19  - Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 @jsdc20132013/05/19  - Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 @jsdc2013
2013/05/19 - Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 @jsdc2013Kevin Huang
 
Use Git-flow Manage Your Git Workflow
Use Git-flow Manage Your Git WorkflowUse Git-flow Manage Your Git Workflow
Use Git-flow Manage Your Git WorkflowLiangjun Jiang
 
Android 2.2 手機應用程式設計:第四章 第一個程式
Android 2.2 手機應用程式設計:第四章 第一個程式Android 2.2 手機應用程式設計:第四章 第一個程式
Android 2.2 手機應用程式設計:第四章 第一個程式Robert Chi
 
應用 Sikuli 在 Android 設備上執行自動化測試
應用 Sikuli 在 Android 設備上執行自動化測試應用 Sikuli 在 Android 設備上執行自動化測試
應用 Sikuli 在 Android 設備上執行自動化測試Jz Chang
 
第七堂 Youtube 播放 app (2)
第七堂 Youtube 播放 app (2)第七堂 Youtube 播放 app (2)
第七堂 Youtube 播放 app (2)力中 柯
 
InMobi_IAT SDK介接說明(二)
InMobi_IAT SDK介接說明(二)InMobi_IAT SDK介接說明(二)
InMobi_IAT SDK介接說明(二)沛豈 謝
 

What's hot (13)

Introduction to air for android 邱彦林
Introduction to air for android 邱彦林Introduction to air for android 邱彦林
Introduction to air for android 邱彦林
 
GAE Java IDE installation
GAE Java IDE installationGAE Java IDE installation
GAE Java IDE installation
 
Phonegap入門
Phonegap入門Phonegap入門
Phonegap入門
 
Orientation Program
Orientation ProgramOrientation Program
Orientation Program
 
App inventor 教學講義 chapter1
App inventor 教學講義 chapter1App inventor 教學講義 chapter1
App inventor 教學講義 chapter1
 
20140222 Unity Windows lab 移轉實作營
20140222 Unity Windows lab 移轉實作營 20140222 Unity Windows lab 移轉實作營
20140222 Unity Windows lab 移轉實作營
 
轻松写出优雅的Java代码之check style
轻松写出优雅的Java代码之check style轻松写出优雅的Java代码之check style
轻松写出优雅的Java代码之check style
 
2013/05/19 - Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 @jsdc2013
2013/05/19  - Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 @jsdc20132013/05/19  - Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 @jsdc2013
2013/05/19 - Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 @jsdc2013
 
Use Git-flow Manage Your Git Workflow
Use Git-flow Manage Your Git WorkflowUse Git-flow Manage Your Git Workflow
Use Git-flow Manage Your Git Workflow
 
Android 2.2 手機應用程式設計:第四章 第一個程式
Android 2.2 手機應用程式設計:第四章 第一個程式Android 2.2 手機應用程式設計:第四章 第一個程式
Android 2.2 手機應用程式設計:第四章 第一個程式
 
應用 Sikuli 在 Android 設備上執行自動化測試
應用 Sikuli 在 Android 設備上執行自動化測試應用 Sikuli 在 Android 設備上執行自動化測試
應用 Sikuli 在 Android 設備上執行自動化測試
 
第七堂 Youtube 播放 app (2)
第七堂 Youtube 播放 app (2)第七堂 Youtube 播放 app (2)
第七堂 Youtube 播放 app (2)
 
InMobi_IAT SDK介接說明(二)
InMobi_IAT SDK介接說明(二)InMobi_IAT SDK介接說明(二)
InMobi_IAT SDK介接說明(二)
 

Similar to Android程式設計(6)

Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Jun Liu
 
Processing on your Android
Processing on your AndroidProcessing on your Android
Processing on your AndroidCAVEDU Education
 
Open CV Setting For Android Studio
Open CV Setting For Android StudioOpen CV Setting For Android Studio
Open CV Setting For Android StudioPhoebe Huang
 
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得Weizhong Yang
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Jun Liu
 
Dev c++整合開發工具教學
Dev c++整合開發工具教學Dev c++整合開發工具教學
Dev c++整合開發工具教學Lin Steven
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境Will Huang
 
Windows App development for iOS, Android developer
Windows App development for iOS, Android developerWindows App development for iOS, Android developer
Windows App development for iOS, Android developerAscii Huang
 
Android NFC Application Development Environment Setup
Android NFC Application Development Environment SetupAndroid NFC Application Development Environment Setup
Android NFC Application Development Environment SetupChun-Kai Wang
 
搭建你的Android Studio開發環境
搭建你的Android Studio開發環境搭建你的Android Studio開發環境
搭建你的Android Studio開發環境Yuan Chiu
 
GDG Taichung - Flutter and Firebase.pdf
GDG Taichung - Flutter and Firebase.pdfGDG Taichung - Flutter and Firebase.pdf
GDG Taichung - Flutter and Firebase.pdfDuran Hsieh
 
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...jasonzheng50
 
GDG Taichung: What is new in Firebase
GDG Taichung: What is new in Firebase GDG Taichung: What is new in Firebase
GDG Taichung: What is new in Firebase Duran Hsieh
 
LargeCodebases_Lecture01_Getting Set Up.pptx
LargeCodebases_Lecture01_Getting Set Up.pptxLargeCodebases_Lecture01_Getting Set Up.pptx
LargeCodebases_Lecture01_Getting Set Up.pptxssusere42ed6
 
Universal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java scriptUniversal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java scriptIan Chen
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node jsXuefeng Zhang
 
Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學Wei-Xiang Wang
 

Similar to Android程式設計(6) (20)

Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Android gradle 从入门到gg 0
Android gradle 从入门到gg 0
 
AS Workshop
AS WorkshopAS Workshop
AS Workshop
 
Processing on your Android
Processing on your AndroidProcessing on your Android
Processing on your Android
 
Open CV Setting For Android Studio
Open CV Setting For Android StudioOpen CV Setting For Android Studio
Open CV Setting For Android Studio
 
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1
 
Dev c++整合開發工具教學
Dev c++整合開發工具教學Dev c++整合開發工具教學
Dev c++整合開發工具教學
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
 
Windows App development for iOS, Android developer
Windows App development for iOS, Android developerWindows App development for iOS, Android developer
Windows App development for iOS, Android developer
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Android NFC Application Development Environment Setup
Android NFC Application Development Environment SetupAndroid NFC Application Development Environment Setup
Android NFC Application Development Environment Setup
 
搭建你的Android Studio開發環境
搭建你的Android Studio開發環境搭建你的Android Studio開發環境
搭建你的Android Studio開發環境
 
GDG Taichung - Flutter and Firebase.pdf
GDG Taichung - Flutter and Firebase.pdfGDG Taichung - Flutter and Firebase.pdf
GDG Taichung - Flutter and Firebase.pdf
 
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
Insider Dev Tour - Taipei Productive and Fun Web Development with NodeJS and ...
 
GDG Taichung: What is new in Firebase
GDG Taichung: What is new in Firebase GDG Taichung: What is new in Firebase
GDG Taichung: What is new in Firebase
 
LargeCodebases_Lecture01_Getting Set Up.pptx
LargeCodebases_Lecture01_Getting Set Up.pptxLargeCodebases_Lecture01_Getting Set Up.pptx
LargeCodebases_Lecture01_Getting Set Up.pptx
 
Universal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java scriptUniversal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java script
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學Android Studio NDK(JNI) + OpenCV 完整教學
Android Studio NDK(JNI) + OpenCV 完整教學
 
C語言初體驗
C語言初體驗C語言初體驗
C語言初體驗
 

More from Roy Wang

Android程式設計(7)
Android程式設計(7)Android程式設計(7)
Android程式設計(7)Roy Wang
 
Android 程式設計(5)
Android 程式設計(5)Android 程式設計(5)
Android 程式設計(5)Roy Wang
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)Roy Wang
 
Android 程式設計(2)
Android 程式設計(2)Android 程式設計(2)
Android 程式設計(2)Roy Wang
 
App inventor 5
App inventor 5App inventor 5
App inventor 5Roy Wang
 
App inventor 4
App inventor 4App inventor 4
App inventor 4Roy Wang
 
App inventor 3
App inventor 3App inventor 3
App inventor 3Roy Wang
 
App inventor 2
App inventor 2App inventor 2
App inventor 2Roy Wang
 

More from Roy Wang (8)

Android程式設計(7)
Android程式設計(7)Android程式設計(7)
Android程式設計(7)
 
Android 程式設計(5)
Android 程式設計(5)Android 程式設計(5)
Android 程式設計(5)
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)
 
Android 程式設計(2)
Android 程式設計(2)Android 程式設計(2)
Android 程式設計(2)
 
App inventor 5
App inventor 5App inventor 5
App inventor 5
 
App inventor 4
App inventor 4App inventor 4
App inventor 4
 
App inventor 3
App inventor 3App inventor 3
App inventor 3
 
App inventor 2
App inventor 2App inventor 2
App inventor 2
 

Android程式設計(6)