簡體   English   中英

如果多個活動和服務需要,在 Android 中加載本機庫的位置

[英]Where to load a native library in Android if required by multiple activies and services

我的一些 Kotlin 類是由本機庫(使用 jni 的 Rust)實現的。 這些類用於大多數活動和一個同步服務(第二個服務可能會稍后出現)。

加載此庫並處理加載錯誤的推薦解決方案是什么(例如,如果加載失敗,則發送錯誤報告)?

基本示例在MainActivity.onCreate加載一個庫。 或者我經常在 MainActivity 類中看到一個靜態塊。 另一種方法可能是從Application的派生類中加載庫。 但我不確定是否只有一個Application實例用於所有活動和服務,或者是否為每個服務創建了一個“Application”實例而為所有活動創建了另一個實例。

所以我的問題是:把System.loadLibrary()放在哪里?

是的,該應用程序是整個 Android 應用程序的單例。 但是您不必擔心,如果之前已加載該庫,LoadLibrary() 不會執行任何操作。 因此,最佳實踐是在依賴此庫的所有類的靜態塊中添加 LoadLibrary。

考慮使用ReLinker庫,該庫提供日志記錄以及解決加載本機庫時出現的一些普遍問題的方法。

暫無
暫無

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

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