Android studio 中NDK的配置和JNI實現的完整過程SerialPort android串列埠
之前用eclispse的時候寫過一篇關於ndk配置和Jni實現的部落格,由於現在大部分都使用android studio了,剛好接到android 串列埠的一個需求。就整體實現了一遍,希望整個過程寫出來可以給大家一點幫助。
1.首先建立一個android工程,這個就不詳細解釋了。
2.在android中配置NDK
(1)首先下載NDK,我沒有用sdk直接下載,而是另外下載的android-ndk-r9d
(2)在androidstudio中設定,file–>product structor
3.在src–>java包中匯入serialPort的java檔案,在同級目錄下建立jni目錄,匯入serialPort.c檔案,如圖
4.配置各種ndk的路徑,如下:
開啟Project的local.properties檔案新增NDK路徑,系統一般在第二步的時候自動生成。
在gradle.properties新增android.useDeprecatedNdk=true
在app路徑的build.gradle 的defaultconfig中新增
5.生成類檔案,點選bulid–>make project即可生成。在如圖的路徑下
6.然後生成.h檔案,開啟android studio下的終端terminal命令列:
輸入命令為:javah -d jni -classpath C:\Users\huchang\AppData\Local\Android\sdk\platforms\android-19\android.jar;
E:\androidDevelop\MConcentrator\app\build\intermediates\classes\debug com.system.mconcentrator.mconcentrator.serialport.SerialPort
一個是我android jar包的路徑,一個是我的串列埠類的路徑。串列埠類為SerialPort.class
如圖:
6.生成.so動態庫
(1).在jni目錄下,新建Android.mk檔案,編寫程式碼如下:
(2)在工程根目錄下新建application.make檔案,寫入以下內容:
APP_PROJECT_PATH := $(call my-dir)
APP_MODULES := nativeTest
3,在命令列下,cd到jni目錄(就是之前javah -d jni生成的那個資料夾)下,輸入指令: ndk-build,等一會即可生成.so檔案。位於lib目錄下,將其放到app/src/main/jniLibs目錄下就能用了。
備註:其實第三步也可以不用,只要前面的配置好,直接rebuild工程,系統會自動生成如下檔案,將其放到app/src/main/jniLibs目錄下就能用了。
另外備註下h檔案的生成
4、使用javah 命令生成JNI的 .h標頭檔案
(1)使用windows自帶的命令列或則使用Android Studio開啟 Terminal(View -> Tool Windows -> Terminal),進入JNI工程的根目錄下,
使用執行javah -classpath . -jni SerialPort
這個步驟很容易出現找不到類檔案的情況,如:微笑
a、
b、
出現第一種,就是沒有找到jni的根目錄,第二種就是沒有指定路徑
記住通用格式——
javah -classpath . -jni 類路徑.JNI類
這個步驟需要注意的地方是什麼才算工程的根目錄,請看下面圖的解釋:
看文字可能有點難理解,舉個例子,那我當前的工程目錄來說:
E:\androidcode\SerialPortNDK\app\src\main\java\com\serialport
則根目錄就是E:\androidcode\SerialPortNDK\app\src\main\java —》 java就是根目錄
其實,還有個竅門大笑,直接看.java類檔案的包名也可以知道,如:檢視SerialPort.java 檔案
上圖中包名為 com.serialport 則包名的上一層目錄就是根目錄。
因此,執行在java目錄,執行javah -classpath . -jni com.serialport.SerialPort 如圖:
相關文章
- Android Studio NDK:二、JNI 返回JAVA 實體AndroidJava
- Android Studio NDK開發-JNI呼叫Java方法AndroidJava
- android studio配置ndk開發Android
- Android Studio中NDK開發Android
- Android Studio NDK開發-環境配置Android
- Android NDK祕籍--初識NDK、JNI、Makefile/CMakeAndroid
- Android Studio3.0 NDK配置與開發Android
- Android NDK開發之JNI基礎Android
- Android Studio NDK:三、打包SOAndroid
- Android Studio jni - 入門篇Android
- Android:JNI 與 NDK到底是什麼?Android
- Android中的JNI入門實戰Android
- C# SerialPort 串列埠通訊C#串列埠
- android中foreground水波實現過程分析Android
- Android 串列埠通訊Android串列埠
- Android開發_在Android Studio中搜尋專案中出現過的字串Android字串
- Android Studio 已有專案新增NDK支援(mac/ndk-build)AndroidMacUI
- Android Studio配置Android
- android studio 配置Android
- JNI 基礎 - Android 共享記憶體的序列化過程Android記憶體
- Mac之Android Studio開發NDK入門MacAndroid
- Android JNI&NDK程式設計小結及建議Android程式設計
- Android中View的測量和佈局過程AndroidView
- Android JNI 中的執行緒操作Android執行緒
- Android JNI開發系列之配置Android
- Android Studio中的package name和application IDAndroidPackageAPP
- Android Studio 配置目錄的建立和一些基本配置Android
- Android之串列埠程式設計Android串列埠程式設計
- Android NDK——初識協程(Coroutine)和libco的簡單介紹使用Android
- android studio 2022配置加速Android
- android ndk整合Android
- Android Studio中的外掛ButterKnife的配置及其使用方法Android
- QT實現串列埠助手中串列埠名的實時更新QT串列埠
- 一定能成功的Android NDK環境配置教程Android
- Android Studio通過style和layer-list實現自定義進度條Android
- 一些Android Studio相關的配置Android
- Android:JNI與NDK(二)交叉編譯與動態庫,靜態庫Android編譯
- Android中Button設定background過程的研究Android
- Android小部件Widget開發過程中的坑和總結Android