記一次native庫命名空間引用的問題

部分報錯信息如下:

library "/system/lib64/libNlscanCamera.so" ("/system/lib64/libNlscanCamera.so") needed or dlopened by "/data/app/~~efM1mNjqWZAgQVze7nFDdw==/com.kte.pda.scan-G_DHNq5ejn431u27KB22hg==/lib/arm64/libNlscanHostDecodeJni.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/~~efM1mNjqWZAgQVze7nFDdw==/com.kte.pda.scan-G_DHNq5ejn431u27KB22hg==/lib/arm64:/data/app/~~efM1mNjqWZAgQVze7nFDdw==/com.kte.pda.scan-G_DHNq5ejn431u27KB22hg==/base.apk!/lib/arm64-v8a", permitted_paths="/data:/mnt/expand:/data/data/com.kte.pda.scan"]


從該報錯能得到的信息是:

無法鏈接到libNlscanCamera.so(該庫在/system/lib64路徑是存在的),提示是該namespace 不能訪問到該庫


經(jīng)過排查發(fā)現(xiàn),是app打包的libNlscanHostDecodeJni.so其實在系統(tǒng)(/system/lib64)是已經(jīng)存在的,app再次引入該庫所在的命名空間是訪問不了/system/lib64下的庫的,除非是該庫配置了為公開庫(具體可以在/etc/public.library.txt中配置,這是android高版本之后的一個機(jī)制)


最后是打包的時候不把so庫打包進(jìn)去,直接使用系統(tǒng)中的庫(應(yīng)該是系統(tǒng)中對native庫也是做了簽名或者權(quán)限之類的訪問規(guī)則)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容