Android串口通信UnsatisfiedLinkError和libserial_port.so: has text relocations异常

一,异常

1,使用Google串口调试开源库App,调试串口出现以下异常:

2,AndroidStudio的logcat打印报错信息:UnsatisfiedLinkError: dlopen failed: /data/app/com.smart.vendor.serialport.library-1/lib/arm/libserial_port.so: has text relocations

二,解决办法:

在Android.mk文件中加入:LOCAL_LDFLAGS += -fPIC,重新编译Google开源库的源码,生成.so库

#
# Copyright 2009 Cedric Priscal
# 
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License. 
#

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

TARGET_PLATFORM := android-3
LOCAL_MODULE    := serial_port
LOCAL_SRC_FILES := SerialPort.c
LOCAL_LDLIBS    := -llog

#加入如下信息
LOCAL_LDFLAGS += -fPIC

include $(BUILD_SHARED_LIBRARY)


重新编译好的.so库

第二种解决办法:

module下的build.gradle 把targetSdkVersion 改为22以下(也就是Android 6.0以下版本);在Android 6.0之前,text reloactions的问题,会在编译的过程中,作为warning报出来;在Android 6.0以上版本,原来的warning被升级为error了。因此,同样的库文件,在Android 6.0前的环境运行,不报错;6.0及以上版本就会crash掉。

 

如果对您有所帮助的话

不妨加个关注,点个赞哈,您的每个小小举动都是对我莫大的支持!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ang_qq_252390816

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值