您好,登錄后才能下訂單哦!
(2018年11月23日 在 <a href="revise_181123">鏈接 </a> 補充了一個新的BUG)
一個新項目的導入 可能會遇到多個問題,就這些問題 做個 解決集合,以便日后回顧,
版本 : android studio3.1.4 ,opencv-3.4.1-android-sdk
首先 我們要給 IDE 安裝 ndk 的環境:
打開 AS的 Settings: File->Settings
(PS: 好像是這些。。。。具體的忘記了。。。  ̄□ ̄||)
Apply 后 就等著 下載安裝吧~~~~~
環境弄好后 我們開始 看具體的 實施步驟:
一、下載OpenCV android 的SDK ,
(2018年9月10日最新版) https://sourceforge.net/projects/opencvlibrary/files/opencv-android/3.4.1/opencv-3.4.1-android-sdk.zip/download
二、導入項目
8、next完后直接 finish就好了。
不過 項目導入后 還沒完,接下來
include ':openCVLibrary341'
然而這時候 還沒有結束:
我在編譯后報出了 一個問題:
這是因為 OpenCV 的 compileSdkVersion 太低了
我這里是 改成了和 27 就編譯通過了
到這里 導入工作 也就進行了一半了:
接下來 還要導入 .so文件,.mk文件
這些文件分別在:
1、.so文件:
2、.mk文件在
然后接下來 在 android studio 的 src/main目錄下 分別 新建 jni 和 jniLibs兩個目錄,如圖
然后將 之前 的 ....\OpenCV-android-sdk\samples\face-detection\jni 目錄下的所有文件復制到項目的jni目錄下
然后將 .....\OpenCV-android-sdk\sdk\native\libs 目錄下的所有內容復制到 jniLibs目錄下
如圖:
這時候 還要配置下 jni 的目錄,配置方式如圖:
externalNativeBuild{ ndkBuild{ path } }
ok 我們編譯下看看~~~
結果 Duang的一下 搞了一個錯誤~~~
其實 這個東西 就是在我們剛剛 復制過來的 Android.mk中
只要將這個 按照我們自己的實際路徑改一下 就ok了
這樣再次編譯 ok 通過了~ 贊一個先
不過這里先說一下 配置還是有問題的, 但是我們先使用OpenCV 中的 simple 看看吧
simple 路徑:OpenCV-android-sdk\samples\face-detection
因為這是個 Eclipse的項目, 我就簡單的將 Samples 中的相關代碼 復制到 項目中了。主要有這幾樣東西:
1、OpenCV-android-sdk\samples\face-detection\res\raw 這個目錄中是 人臉用到的文件所以是必須的
2、OpenCV-android-sdk\samples\face-detection\src\org\opencv\samples\facedetect 目錄中是 activity文件 和一個工具的java文件
3、需要用到的權限(在這里我沒遇到什么問題,所以就不多說了)
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
4、
5、最后 還有FdActivity 的 layout 別忘了
ok 這個時候 可以運行 看看了,不過我可以提前說明,現在運行會崩潰的~~~
不過沒關系 我們看一下bug~~~
09-10 11:17:15.555 21819-21819/com.example.china_yzh.demoopencv E/zygote64: No implementation found for long com.example.china_yzh.demoopencv.DetectionBasedTracker.nativeCreateObject(java.lang.String, int) (tried Java_com_example_china_1yzh_demoopencv_DetectionBasedTracker_nativeCreateObject and Java_com_example_china_1yzh_demoopencv_DetectionBasedTracker_nativeCreateObject__Ljava_lang_String_2I)
09-10 11:17:15.555 21819-21819/com.example.china_yzh.demoopencv D/AndroidRuntime: Shutting down VM
09-10 11:17:15.557 21819-21819/com.example.china_yzh.demoopencv E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.china_yzh.demoopencv, PID: 21819
java.lang.UnsatisfiedLinkError: No implementation found for long com.example.china_yzh.demoopencv.DetectionBasedTracker.nativeCreateObject(java.lang.String, int) (tried Java_com_example_china_1yzh_demoopencv_DetectionBasedTracker_nativeCreateObject and Java_com_example_china_1yzh_demoopencv_DetectionBasedTracker_nativeCreateObject__Ljava_lang_String_2I)
at com.example.china_yzh.demoopencv.DetectionBasedTracker.nativeCreateObject(Native Method)
at com.example.china_yzh.demoopencv.DetectionBasedTracker.<init>(DetectionBasedTracker.java:9)
at com.example.china_yzh.demoopencv.FdActivity$1.onManagerConnected(FdActivity.java:91)
at com.example.china_yzh.demoopencv.FdActivity.onResume(FdActivity.java:149)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1361)
at android.app.Activity.performResume(Activity.java:7361)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3765)
出錯的原因 就是我上面紅色 標出的內容:
No implementation found for long com.example.china_yzh.demoopencv.DetectionBasedTracker.nativeCreateObject
這個問題 我是找了好久 才 弄明白的。。。。
其實 這個就是我之前 導包是 留下的那個問題 , 之前在 jni目錄下 導入了 四個文件 分別是
之前 OpenCV.mk找不到 是因為 Android.mk
這次的錯誤 是后面兩個 文件 , 一個 .ccp文件 和一個 .h文件。
我們來看看文件的內容:
看到這個是不是覺得眼熟 ,沒錯 我們之前的 bug中 有類似的 文本說明:
很簡單 將 上面說的 .h和.cpp中的 所有 都改成這個目錄就好了,(ps:這里的內容是因項目路徑而異的,根據實際情況來)
不用擔心 Replace吧~
改完后 我們再來運行看看
<a name="revise_181123">修改日期:2018年11月23日</a>
修改原因:遇見新的BUG
BUG: Android NDK: APP_STL gnustl_static is no longer supported.
AS 不再支持 gnustl_static 要換成 c++_static 或作者 c++_shared(是不是這么寫的忘記了。。。不過報錯的時候會有顯示的)
修改位置:
來看看 運行效果
額 可能邊上兩個太黑了 -_-||~~~ 我不是有意的 。。。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。