Android之解决java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has text relocations
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Android之解决java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has text relocations
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                1、問題
項目導入別人的so,有個項目沒問題,但是這個有問題,運行提示這個錯誤
java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has text relocations
2、臨時規避的解決辦法
把現在的項目targetSdkVersion版本降低: such as,又24變為22,這樣可以解決問題(沒有源代碼的情況下)
android:targetSdkVersion="22"6.0之前只會產生一個警告,系統還是可以正常加載包含text relocations的共享庫的,但從6.0起,即SDK Version>=23時,系統將會拒絕加載包含text relocations的共享庫,同時輸出錯誤Log,根本原因,是so動態鏈接庫的代碼并非PIC(Position independent code)
最好的辦法是去修復源代碼然后編譯,我們這里調用別人的so,沒辦法了,如果是自己的so,在使用NDK編譯so時配置Android.mk,增添PIC相關的配置項,這樣編譯出來的so文件將不再有text relocations的問題。具體配置如下:
LOCAL_LDFLAGS += -fPIC
總結
以上是生活随笔為你收集整理的Android之解决java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has text relocations的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: linux之readelf命令
- 下一篇: 动态规划之两个字符串的最大子序列
