从 API 23 开始,共享对象将不得包含文本重定位。也就是说,代码必须按原样加载,不得对其进行修改。
问题就是:当android studio的targetSdkVersion = 23时,之前能用的动态库在代用的时候会报错,错误信息包含has text relocations ....
官方给出的解决方案:wiki.gentoo.org/wiki/Hardened/Textrels_Guide
其实看了看,出现这个问题是因为加入了汇编优化造成的(简单猜测),于是试了下将之前报错的so中的 enable-asm设置成disable重新编译动态库,然后就可以了。
所以,给出一个简单的,暂时的解决方案:
将so中的asm关闭,重新编译动态库,试一试,说不定就可以用了?
如果怕关闭汇编优化降低效率,那只能看着官方给出的方案去修改汇编的代码了。