天天看點

需調用JAVA native方法的.so包複制到其他項目 No implementation found for native 問題

參考https://blog.csdn.net/zhouyingge1104/article/details/73749350

so包需要調用native方法時,已編譯好的so包包名已經寫死,若無法找到想要的配置檔案重新編譯so包,可以在java檔案夾下建立原項目包名同名package,如下圖:

需調用JAVA native方法的.so包複制到其他項目 No implementation found for native 問題

标題

RTSPClient為含有native方法的類,so包中對應實作方法為

需調用JAVA native方法的.so包複制到其他項目 No implementation found for native 問題
需調用JAVA native方法的.so包複制到其他項目 No implementation found for native 問題

附ndk編譯so包步驟(live555為例):

1.Android studio 工程目錄下建立jni檔案夾,複制c++項目至jni檔案夾下的live檔案夾;

2.jni檔案夾下,建立Android.mk和Application.mk(内容如下);

3.項目 gradle.properties 檔案最後一行加上 android.useDeprecatedNdk=true;

4.建立類和native方法,編譯後在F:\work_space\TestRtsPlay2\app\build\intermediates\classes\debug  找到對應.class檔案,指令行使用javah指令生成.h檔案;

5.c++代碼引用.h檔案實作native方法;

6.項目檔案夾下,指令行輸入ndk-build進行編譯,編譯成功項目中jni同級别目錄下會有obj檔案夾,裡面有各cpu對應so包,複制到lib或jnilibs中即可;

需調用JAVA native方法的.so包複制到其他項目 No implementation found for native 問題

Android.mk

需調用JAVA native方法的.so包複制到其他項目 No implementation found for native 問題

Application.mk

需調用JAVA native方法的.so包複制到其他項目 No implementation found for native 問題

class類生成的.h檔案

需調用JAVA native方法的.so包複制到其他項目 No implementation found for native 問題

項目結構

繼續閱讀