转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52926274 文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货

首先说明出现下面这个错误的原因可能有很多,你也可以直接看下面的分析,来判断是不是和我一样的问题

介绍一下,在下面的环境中,解决这个问题使用的解决方法。

测试环境:

Galaxy Note3 Android 5.0
Android studio 2.2.2
gradle-2.14.1-all
NDK版本如下图:

项目的build.gradle如下:

android {compileSdkVersion 24buildToolsVersion "24.0.3"defaultConfig {applicationId "com.firs.facedetecttosvr"minSdkVersion 19targetSdkVersion 21ndk {moduleName "libface_identify"abiFilters 'armeabi', 'armeabi-v7a'}}...(部分省略)externalNativeBuild {ndkBuild {path 'src/main/jni/Android.mk'}}
}

Android.mk配置如下

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
LOCAL_MODULE := facetemp
LOCAL_SRC_FILES := libFiFacial.a
include $(PREBUILT_STATIC_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := jpegtemp
LOCAL_SRC_FILES := libjpeg.so
include $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)
#LOCAL_SRC_TCP  := ./tcpSock/maintcp.cpp ./tcpSock/CommLayerTcp.cpp ./tcpSock/NetAuth.cpp ./tcpSock/NetDeal.cpp ./tcpSock/NetPublic.cpp
#LOCAL_SRC_TCP  := maintcp.cpp CommLayerTcp.cpp NetAuth.cpp NetDeal.cpp NetPublic.cppLOCAL_MODULE    := libface_identify
LOCAL_SRC_FILES := facelib.cpp public.cpp  maintcp.cpp CommLayerTcp.cpp NetAuth.cpp NetDeal.cpp NetPublic.cpp gb2312.cpp
#LOCAL_MODULE_FILENAME = libface_identify
LOCAL_SHARED_LIBRARIES := jpegtemp
LOCAL_STATIC_LIBRARIES := facetemp
LOCAL_LDLIBS := -llog -lstdc++
include $(BUILD_SHARED_LIBRARY)

java代码调用so库的代码

 static {// System.loadLibrary("stlport_shared");// System.loadLibrary("jpeg");System.loadLibrary("face_identify");}

出现下面这个错误的原因可能有很多,接下来介绍一下,在上面的环境下,解决这个问题使用的解决方法。

崩溃时的logcat

10-25 19:12:49.217 23377-23377/? I/art: Late-enabling -Xcheck:jni
10-25 19:12:49.587 23377-23377/com.firs.facedetecttosvr W/linker: /data/app/com.firs.facedetecttosvr-2/lib/arm/libjpeg.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
10-25 19:12:49.593 23377-23377/com.firs.facedetecttosvr D/Face_Identify: login in username[test] pwd[123456] nLen[68]
10-25 19:12:49.593 23377-23377/com.firs.facedetecttosvr D/Face_Identify: send packType[1] msgtype[256] subTyep[1]
10-25 19:12:49.601 23377-23377/com.firs.facedetecttosvr D/Face_Identify:  xxxxxxxxxxxxx(10); Client moudle quit StartNetModule 64
10-25 19:12:49.602 23377-23377/com.firs.facedetecttosvr D/Face_Identify:  3333333333(10); Client moudle quit StartNetModule 70
10-25 19:12:49.602 23377-23377/com.firs.facedetecttosvr D/Face_Identify:  88888888888sleep(10); Client moudle quit StartNetModule 72
10-25 19:12:49.608 23377-23413/com.firs.facedetecttosvr D/Face_Identify: iCliePort[32108]  acClieIp[116.205.1.86]CreateTcpClient 478
10-25 19:12:49.620 23377-23416/com.firs.facedetecttosvr D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
10-25 19:12:49.628 23377-23377/com.firs.facedetecttosvr D/ActivityThreadInjector: clearCachedDrawables.
10-25 19:12:49.634 23377-23416/com.firs.facedetecttosvr I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: EGL 1.4 QUALCOMM build: Nondeterministic_AU_msm8974_LA.BF.1.1.3_RB1__release_AU (I741a3d36ca)OpenGL ES Shader Compiler Version: E031.29.00.00Build Date: 04/04/16 MonLocal Branch: mybranch19053788Remote Branch: quic/LA.BF.1.1.3_rb1.12Local Patches: NONEReconstruct Branch: NOTHING
10-25 19:12:49.645 23377-23416/com.firs.facedetecttosvr I/OpenGLRenderer: Initialized EGL, version 1.4
10-25 19:12:49.700 23377-23413/com.firs.facedetecttosvr D/Face_Identify: login in username[test] pwd[123456] nLen[68]
10-25 19:12:49.700 23377-23413/com.firs.facedetecttosvr D/Face_Identify: send packType[1] msgtype[256] subTyep[1]
10-25 19:12:49.700 23377-23414/com.firs.facedetecttosvr D/Face_Identify: TmpStrData.iFd[23] SNEDLEN[90] DoTcpSendThreadPool 736
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify: 000100
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify: packType 1 msgtype 256 subType 2 DoTcpClient 407
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify: InStrProPack.head.index 65000 InStrProPack.head.dataLen 584 DoTcpClient 412
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify: sizeof(InStrProPack.head)[19]
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify:  DoTcpClient 459
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify: chksum[1439] recvSum[1439] DoTcpClient 467
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify: InStrProPack.csuffix[7f]
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify: recv InStrProPack->head.msgtype 256 InStrProPack->head.subType 2 AllDealTcp 682
10-25 19:12:49.803 23377-23413/com.firs.facedetecttosvr D/Face_Identify: DealMsgAuth 145
10-25 19:12:50.599 23377-23377/com.firs.facedetecttosvr I/Timeline: Timeline: Activity_launch_request time:27234823
10-25 19:12:50.985 23377-23377/com.firs.facedetecttosvr D/Face_Identify: InitFaceLib()ghCe: 0xa9f539f0 fun:InitFacial line: 292
10-25 19:12:51.029 23377-23377/com.firs.facedetecttosvr D/Face_Identify: fun:InitFacial line: 299 ghFacialCodec: 0xa9fba180
10-25 19:12:51.029 23377-23377/com.firs.facedetecttosvr D/Face_Identify: DoTcpSendThreadPool Java_com_firs_cn_FaceNative_initFaceLib 357
10-25 19:12:51.043 23377-23377/com.firs.facedetecttosvr D/ActivityThreadInjector: clearCachedDrawables.
10-25 19:12:51.377 23377-23416/com.firs.facedetecttosvr V/RenderScript: 0xaeac8000 Launching thread(s), CPUs 4
10-25 19:12:51.613 23377-23450/com.firs.facedetecttosvr A/libc: Fatal signal 11 (SIGSEGV), code 2, fault addr 0xaebc4000 in tid 23450 (AsyncTask #1)

分析

关键代码:

@Overrideprotected void onResume() {super.onResume();//initCamera(); // 初始化摄像头得到width和height的值surfaceCreated(surfaceHolder);//设置目标界面//创建异步任务,必须传送非零的width和heightmTask = new RecognizeTask(width, height, isFront);//异步操作   摄像头可用240  320  truemTask.setRecognizeListener(this);//重写接口方法mTask.execute(0);}

我改动了一些java代码,导致出现了这个错误,我还原到改动之前的代码,一点一点去替换,发现是调用ndk时,传入的参数问题导致的,(上面代码的第4行,不应该注释掉,初始化摄像头得到width和height的值,在异步任务中调用jni方法会用到这两个值),但是不知道为什么会报出这个错误,想不出原因。感觉有点误导方向

解决方法:

@Overrideprotected void onResume() {super.onResume();initCamera(); // 初始化摄像头得到width和height的值surfaceCreated(surfaceHolder);//设置目标界面//创建异步任务,必须传送非零的width和heightmTask = new RecognizeTask(width, height, isFront);//异步操作   摄像头可用240  320  truemTask.setRecognizeListener(this);//重写接口方法mTask.execute(0);}

虽然示例很有针对性,但是不影响这种解决方法的普遍性,可以当做一种排查方案

关注我的公众号,轻松了解和学习更多技术

.so has text relocations. This is wasting memory and prevents security hardening. Please fix.相关推荐

  1. libxxx.so has text relocations. This is wasting memory and prevents...解决方案

    问题表现形式 错误或警告日志 当targetSdkVersion>=23且使用debug签名时,在6.0+的Android设备上运行App会输出以下错误Log: E/linker: /data/ ...

  2. dlopen failed: /data/app/xxx/lib/arm/libinspos.so : has text relocations

    20160617更新: 使用Android 6.0的NDK重新编译so文件, 即可解决问题. ===================================================== ...

  3. ffmpeg text relocations

    ffmpeg text relocations 参考:http://trac.ffmpeg.org/ticket/4928 解决: --disable-asm 或者--disable-asm --en ...

  4. Android Studio引入.so文件的正确姿势 以及调用.so 文件时报错has text relocations 解决

    首先在src同级目录下创建libs目录讲需要的.so复制到这里效果如图 然后在app级别的build.gradle配置lib路径,效果如果 完整代码如下: apply plugin: 'com.and ...

  5. Android之解决java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has text relocations

    1.问题 项目导入别人的so,有个项目没问题,但是这个有问题,运行提示这个错误 java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has ...

  6. has text relocations

    原文:http://www.itdadao.com/articles/c15a324479p0.html 在Android6.0+系统,app编译时TargetAPI>22时,加载一些so出现h ...

  7. java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/***.so: has text relocations

    最近接手一个古老的项目维护-- 报错信息: 2020-04-23 19:15:44.652 19941-20327/xxx E/AndroidRuntime: FATAL EXCEPTION: Asy ...

  8. 身份证阅读器Android相片解码库报错libwlt2bmp.so:has text relocations解决方案

    身份证阅读器Android相片解码库报错libwlt2bmp.so:has text relocations,如下图的几种情况. libwlt2bmp.so是部里的相片解码库,身份证芯片里面存储的相片 ...

  9. 论文略读 | Question Answering on Knowledge Bases and Text using Universal Schema and Memory Networks

    文章创新点: 使用文本和KB组合的通用模式,结合记忆网络来完成问答 提出模型: UNISCHEMA 提出原因: 知识库问答会受到不完整性的影响,文本虽然包含大量事实,但是存在非结构化文本,将KB和文本 ...

  10. libxxx.so- text relocations问题的终极解决方案

    问题表现形式 错误或警告日志 当targetSdkVersion>=23且使用debug签名时,在6.0+的Android设备上运行App会输出以下错误Log: E/linker: /data/ ...

最新文章

  1. Hystrix全局配置默认超时时间
  2. 迷宫寻路系列常用算法逻辑探究
  3. 浅谈游戏自动寻路A*算法
  4. asp.net core监控—引入Prometheus(一)
  5. c语言转换为python语言_python和c语言
  6. http,tcp的长连接和短连接
  7. 【linux】centos7下muduo库的安装
  8. 跑步进入全站 HTTPS ,这些经验值得你看看
  9. 在Eclipse中使用JUnit5进行单元测试
  10. 黑莓开发新手入门教学帖,如何制作一个能控制LED颜色的程序(一)
  11. 模型解释器-LIME
  12. 如何删除windows 10系统桌面的所有快捷图标
  13. [UE] 在虚幻中使用动画序列和分层骨骼混合简单实现角色看向
  14. JAVA根据PDF文件生成图片
  15. MySQL 数据库--存储引擎
  16. 【大疆无人机OnboardSDK(三)妙算ssh远程控制台系统搭建】
  17. 减少cookie传输_如何使用Cookie减少WordPress垃圾评论
  18. 求助!如果想从事3D建模需要选择什么专业?
  19. 华为OD机试 - 绘图机器(Python)
  20. 如何有效做好地推,地推怎么做最有效呢?这

热门文章

  1. 3dsMax---椅子
  2. 腾讯低代码(lowcode)行列布局
  3. jsp错误之The end tag lt;/s:form is unbalanced
  4. ESP32 LVGL8.1 ——msgbox 消息框 (msgbox 28)
  5. Win32 CMD批处理命令
  6. 基于深度神经网络的社交媒体用户级心理压力检测
  7. php theexcerpt,WordPress:the excerpt(摘要)
  8. 《代码大全》读书笔记之一
  9. 互联网行业定制网站需要多少钱
  10. Paddle飞桨动态图教程——轻量级人像语义分割BiSeNet V2(算法原理、训练、部署,含完整代码和数据)