Android studio 3.4 使用JIN(創建工程)

1 .創建一個新的工程:
首選要保證集成開發環境已經安裝了NDK和Cmake;
在這裏插入圖片描述
2. 右鍵 src->New->Folder->JNI Folder ,這時就可以在main目錄下生產一個JNI文件夾。在這裏插入圖片描述
3. 創建JNI類 在Mainactivity相同的目錄下,創建一個類,在類中加入要實現的native方法;
在這裏插入圖片描述
這個例子是java通過調用Linux庫函數實現串口通信。
4. 將上級目錄拖到teriminal下如圖所示:在這裏插入圖片描述
terminal就會自動進入到這個包的目錄,然後在該目錄下執行javac + 剛纔創建的類文件,成功以後,會在當前目錄下生成一個class文件。
5. 接下來拖動java目錄到Terminal,生成的.h文件一定要和包在同一個路徑下。在這裏插入圖片描述
拖動完成之後,執行javah -jni 包名+類名,如下圖所示:
在這裏插入圖片描述
得到.h文件以後,把這個文件拖動到JNI目錄下。
6. 在該目錄下創建三個文件
1. Android.mk
2. Application.mk
3. SerialLib.cpp (這個文件要和加載的庫對應起來)
在Android.mk中加入以下腳本

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := SerialLib 
LOCAL_SRC_FILES =: SerialLib .cpp
include $(BUILD_SHARED_LIBRARY)

以上代碼需要注意兩點:LOCAL_MODULE和LOCAL_SRC_FILES ,一定要與自己項目對應起來。

在Application.mk 文件中加入下列代碼:

APP_MODULES := SerialLib 
APP_ABI := all

注意APP_MODULES 要與自己的項目名稱對應

接下來就是在SerialLib.cpp實現自己的本地函數
7. 其他相關的配置:
在app目錄下的bulid.gradle中加入

      ndk{
            moduleName "serialLib"
//            abiFilters "armeabi", "armeabi-v7a", "x86" //輸出指定的三種abi體系下的so庫
        }
        sourceSets.main{
            jni.srcDirs = []
            jniLibs.srcDir "src/main/libs"
        }

注意一定是在defaultConfig節點下加入。

在根目錄下的gradle.properties中加入android.useDeprecatedNdk=true;
8. NKD編譯器設置
在file->setting中加入一個外部工具,如下圖在這裏插入圖片描述
program = C:\Android\SDKANDTOOLS\ndk-bundle\build\ndk-build.cmd
Work directory = ProjectFileDirProjectFileDir\app\src\main
設置號好以後點擊OK。
選中JNI類右鍵->New->External Tools->ndk-build,之後就會生成.so庫。

最後就可以直接在其他類中調用此庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章