最近在写本地录音转码过程中引入了liblame.so,我这边用了不同系统版本的手机测试本地录音都没有出现问题,但是有一天,同事在测试的时候,出现了以下错误:
09-13 17:32:29.140 26874-27362/com.axxn.xx E/linker: /data/app/com.axxn.xx-2/lib/arm/liblame.so: has text relocations 09-13 17:32:29.192 26874-27362/com.axxn.xx E/AndroidRuntime: FATAL EXCEPTION: Thread-13 Process: com.axxn.xx, PID: 26874 java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/com.axxn.xx-2/lib/arm/liblame.so: has text relocations at java.lang.Runtime.loadLibrary0(Runtime.java:994) at java.lang.System.loadLibrary(System.java:1533) at net.sourceforge.lame.Lame.<clinit>(Lame.java:35) at net.sourceforge.lame.Lame.initializeEncoder(Native Method) at com.axxn.xx.modules.record.scene.SceneRecorderHandler.run(SceneRecorderHandler.java:76)
经查资料得知,原来是Google在API23以后把这个原本是Warn标志升级到了Error标志,故会报错。
解决办法就是把我们项目配置中的targetSdkVersion版本改为22或者以下,问题就会得到解决。
在此记录下这个错误。