1. 程式人生 > >Android N載入系統私有庫時出現is not accessible for the namespace錯誤和針對該錯誤的解決方法

Android N載入系統私有庫時出現is not accessible for the namespace錯誤和針對該錯誤的解決方法

谷歌從Android N開始,除了那些在Android NDK提供的庫之外,限制了應用對系統私有庫的載入。既然是限制了,想通過以前的方法去載入庫已經行不通了。所以目前的解決方法就是把應用需要載入的庫和需要依賴的庫從系統中pull出來,然後整合到自己的應用當中。本文是看了這篇文章才有的啟發http://www.wtoutiao.com/p/2e2B7iw.html,並通過實踐證實程式可以正確執行。本文以使用libOpenCL.so庫為例進行說明。

這裡先貼出如果在Android N 載入系統私有庫提示的錯誤:

java.lang.UnsatisfiedLinkError: dlopen failed: library "libcutils.so"
("/system/lib/libcutils.so") needed or dlopened by "/system/lib/libnativeloader.so"
is not accessible for the namespace "classloader-namespace"
  at java.lang.Runtime.loadLibrary0(Runtime.java:977)
  at java.lang.System.loadLibrary(System.java:1602)

1、先從手機系統檔案中pull出相關庫(以libOpenCL.so為例)



2、匯入到libs目錄下,並使用System.loadLibrary("OpenCL")載入:


System.loadLibrary("OpenCL");
Note:我只用libOpenCL.so,但為什麼我的arm64_v8a目錄下還有那麼多其他的庫呢?如果你試著匯入之後執行就會知道,使用OpenCL還要依賴其他很多的庫,所以,我一併從手機檔案系統中匯出這些需要依賴的庫。

3、使用dlopen 載入libOpenCL.so

我在另一篇文章中已經介紹瞭如何動態載入libOpenCL.so,大家可以移步到這裡去學習:
dlopen動態載入
,這個連結的文章提供了一個demo,大家可以下載學習。這裡順便說明一下,在這個連結中介紹到,載入時要指定庫的路徑,那麼針對這個情況,路徑就直接這樣子設定就可以了:
 dlopen("libOpenCL.so",RTLD_LAZY);

相關推薦

Android N載入系統私有出現is not accessible for the namespace錯誤針對錯誤解決方法

谷歌從Android N開始,除了那些在Android NDK提供的庫之外,限制了應用對系統私有庫的載入。既然是限制了,想通過以前的方法去載入庫已經行不通了。所以目前的解決方法就是把應用需要載入的庫和需要依賴的庫從系統中pull出來,然後整合到自己的應用當中。本文是看了這篇

AndroidN載入私有時報錯:xxx is not accessible for the namespace

谷歌從Android N開始,除了那些在Android NDK提供的庫之外,限制了應用對系統私有庫的載入。既然是限制了,想通過以前的方法去載入庫已經行不通了。暫時想到兩種解決方法,目的是將缺少的so檔案放入apk中的lib目錄中。1.在Android.mk中新增缺少的so檔案

Android studio新增第三方類出現的版本不相容問題

Android studio新增第三方類庫時可能會出現版本不相容問題,今天我就遇到了一個這樣的問題。 新增RecycleView的support類庫時報錯: Error:Execution failed for task ':app:processDebugManifest

ANDROID動態載入 使用SO要注意的一些問題

基本資訊 Android專案裡的SO庫 正好動態載入系列文章談到了載入SO庫的地方,我覺得這裡可以順便談談使用SO庫時需要注意的一些問題。或許這些問題對於經常和SO庫開發打交道的同學來說已經是老生長談,但是既然要討論一整個動態載入系列,我想還是有必要說說使用SO庫時的一些問題。 在專案裡使用SO庫非常簡

Android Studio打包APK出現 is not translated in "en" (English) [MissingTranslation]

轉載於:http://blog.csdn.net/zhangh8627/article/details/47170859 解決辦法:resources 標籤內增加xmlns:tools="http://schemas.android.com/tools" tools:ign

mono-3.4.0 原始碼安裝出現的問題 [do-install] Error 2 [install-pcl-targets] Error 1 解決方法

/usr/bin/install: cannot stat `targets/Microsoft.Portable.Common.targets': No such file or directory make[7]: *** [install-pcl-targets] Error 1 make[7]

Cmake編譯 VTK出現問題:error configuration process, project files may be invalid的解決方法

在搭建vtk的基本環境之後,接下來就是學習過程了。但是自己在第一個例子就出現了一堆問題,這裡貼出來解決之道,先填一波坑再說。 1. 問題介紹 我是按照:東靈VTK教程系列導航 學習的。 按照上面的介紹,首先編寫第一個cmake編譯vtk的例子: 首先是cmake程式

mysql連線linux系統提示“登入出現1130 is not allowed to connect to this MySql server”問題,解決方法

你想root使用者名稱使用root密碼從任何主機連線到MySQL伺服器的話。 執行命令:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 命

使cocopods管理開源編譯出現Library not found for -lPods問題的解決方法

Go to Product > Edit Scheme Click on Build Add the Pods static library, and make sure it's at the top of the list Clean and build again If that doesn'

studio 真機除錯出現“Application xxxx waiting for the debugger to attach”

android studio 真機除錯的時候出現這樣的錯誤,一般情況下,這個提示視窗會顯示幾秒鐘然後就沒有了! 但真機除錯 一直顯示 而且不會自動關閉! 忽然才發現同時打開了Eclipse 和studio,並且 studio 開了兩個......es 和 as 都處於deb

MacOS登陸win10 出現”遠端桌面無法驗證您希望連線的計算機的身份"解決方法

執行gpedit.msc 計算機配置—>管理模板—>windows元件—>遠端桌面服務—>遠端桌面會話主機—>安全 1.遠端(RDP)連線要求捨不得指定的安全層—>啟用—>安全

SQL Server 2008還原資料庫出現“備份集中的資料庫備份與現有的資料庫不同”的解決方法

通過資料庫預設方式 還原資料庫時出現類似下面截圖中的錯誤   此時需要通過指令碼的方式進行還原操作: 1、首先,將目標資料庫屬性中的“限制訪問”設定“SINGLE_USER”(獨佔); 2、然後,新建查詢,選擇“master”資料庫; 3、其次,根據實際情況對下面的

iOS打包上傳ipa文件,報錯<ERROR ITMS-90096: "Your binary is not optimized for iPhone 5 - New iPhone apps......>的解決方案

splay update 分享圖片 trait tin log .com bmi graphic 很長一段時間習慣了用企業級證書發布,最近的新項目使用Xcode 9.1發布到AppStore時遇到了一個小問題(emm..其實問題跟Xcode版本沒關系,我也不知道為什麽要聲明

delphi 10.1編譯專案的時候出現MSBuildToolsPath is not specified for the ToolsVersion解決辦法

今天在使用delphi 10.1編譯專案的時候出現MSBuildToolsPath is not specified for the ToolsVersion "14.0" defined at

Android開發之系統音訊載入全過程

本文基於android7.0分析 在介紹解析音訊配置檔案文章中 已經說了,系統音訊庫的載入與否取決audio_policy.conf是否有配置其資訊。 當將audio_policy.conf解析完成之後,接下來就是根據解析好的配置檔案資料去載入系統音訊庫,我們繼續看到 

跟後臺打印程序系統服務通訊出現錯誤。請打開服務管理單元,確認後臺打印程序服務是否在運行。

term tab 日期 system ice 停用 blog spooler 警告 一: 問題描述: 【錯誤】 跟後臺打印程序系統服務通訊時出現錯誤。請打開服務管理單元,確認後臺打印程序服務是否在運行。事件類型:警告事件來源:TermServD

關於JDBC連接數據出現的Public Key Retrieval is not allowed錯誤

三種 back 關於 reg host 出現 mysql命令 一次 增加 問題描述 最近在學習MyBatis框架,參考官方的文檔通過配置文件的方式已經實現了通過Configuration配置文件和mapper映射文件訪問mysql8數

使用Junit單元測試及操作MySQL數據出現錯誤解決方法

靜態 方法 簡單 註解 info 正常 mage 返回 基本上 在一次看Mybatis視頻學習過程中,教學視頻中用到了Junit單元測試,因為剛開始學習,會出現許多錯誤,每次出現錯誤都會上網搜索,但是發現基本上錯誤都是這麽幾種: 1、沒有@Test註解 2、測試方法用s

Navicat for Mysql連接mysql數據出現 2003-Can't connect to MySql server on 'localhost'(10061)

打開 mysql數據庫 nec nav png 9.png 安裝路徑 mys 並且 以前編寫的程序能夠連接mysql,今天突然連接mysql時出現下面的情況。 並且 win+R 輸入:services.msc 打開了服務,但是在服務裏也沒有MySQL56,如下圖 解決的

android studio提交到開源git出現:fatal: refusing to merge unrelated histories的解決辦法

android studio提交到開源git時出現:fatal: refusing to merge unrelated histories的解決辦法 1.cmd進入專案的根目錄。 2.執行下面的命令:git pull origin master –allow-unrela