簡體   English   中英

在應用程序模塊中使用帶有 JNI 的庫模塊 Android 庫模塊

[英]Use library module with JNI in application module Android library module

我有一個包含 3 個模塊的項目 - 一個庫和 2 個使用該庫的應用程序。 現在我想將 native-lib(一個 c 文件)添加到庫模塊中,並在其中一個庫類中使用它。 我是 NDK 的新手,所以我按照谷歌指南創建了一個支持 NDK 的新項目,它運行良好。 然后我復制了 cpp 目錄、CMakeList,並保留了項目的正確結構。 現在,發生的事情是項目編譯成功,但當我嘗試從 java 類調用本機 func 時崩潰。 異常:方法拋出“java.lang.UnsatisfiedLinkError”異常。

當我編寫一個引用其他本機庫的 Java 庫時,我遇到了此異常以及隨后的ClassNotFoundException 我沒有像你那樣使用 NDK,但也許這些步驟(為我解決了這個問題)可以為你提供一些新想法:

  1. 我在 AndroidStudio 中將本機庫(對我來說是 OpenCV for Java)作為庫導入。
  2. 我將本機源文件放在(導入的)庫的 jniLibs 文件夾中。
  3. 然后我將庫導出為 AAR 文件。 (制作模塊 -> 從/build/outputs/aar/中取出 AAR)
  4. 我在自己的庫中使用了 AAR 文件。 這樣,引用的本機庫的類就可以在我自己的導出庫中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM